zoukankan      html  css  js  c++  java
  • 二叉搜索树与双向链表

    题目描述

    输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
     
    解:这道题其实是一道中序遍历的题,需要注意的是把当前子树最大的节点返回到上一层。
    下面解法中注意的是,第二个参数要加引用。因为我们需要返回上一个结点本身,而不是修改结点中的值。如果不加引用,第二个参数其实是一个复制的指针指向要返回的节点,而外层的指针并未改变,下面可以看一个例子
    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };*/
    class Solution {
    public:
        TreeNode* Convert(TreeNode* pRootOfTree)
        {
            if(pRootOfTree==nullptr)
            {
                return nullptr;
            }
            TreeNode *pre=nullptr;
            ConvertImplement(pRootOfTree,pre);
    
            TreeNode* res = pRootOfTree;
            while(res ->left)
                res = res ->left;
            return res;
        };
        //pre返回为左子树最大的结点
        void ConvertImplement(TreeNode* pRootOfTree,TreeNode*& pre)
        {
            if(pRootOfTree==nullptr)
            {
                return;
            }
            
            ConvertImplement(pRootOfTree->left,pre);
            
            pRootOfTree->left=pre;
            
            if(pre)
            {
                pre->right=pRootOfTree;
            }
            pre=pRootOfTree;
            //
            ConvertImplement(pRootOfTree->right,pre);
        }
    };
    void test(int *p, int *pre)
    {
        pre = p;
    }
    int main()
    {
        char *p = "12222";
        string s1(p, 2);
        son *s = new son;
        base *b=nullptr;
        delete(b);
    
        int i = 1;
        int *ptr = nullptr;
        test(&i, ptr);
    }

    这里的ptr还是nullptr

  • 相关阅读:
    单链表的基本操作--c++
    剑指Offer-- 替换空格
    华为机试题-字符串分隔
    Leetcode 98. Validate Binary Search Tree
    树的层次遍历的几种方法
    Camera Path插件的使用
    3d 人物残像
    gameUnity 0.15 beta 网络游戏框架
    gameUnity 0.15alpha 网络游戏框架
    gameUnity 网络游戏框架
  • 原文地址:https://www.cnblogs.com/wangshaowei/p/13065717.html
Copyright © 2011-2022 走看看