zoukankan      html  css  js  c++  java
  • 【剑指offer26 二叉搜索树与双向链表】

    题目描述

    输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
     
    1.两个节点指针cur、pre(初始null)
    2.先向左找打最小的
    3.再递归找右边的的
    4.双向链表,那left指向pre   pre->right指向cur
     
    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };*/
    class Solution {
    public:
        void fun(TreeNode *cur , TreeNode *&pre){ //一定得加上引用 因为pre动态变化
            if(!cur)return ;
            fun(cur->left , pre);//一直往左 找到当前最小
            cur->left = pre ; //小的在前
            if(pre)pre->right = cur ; //逆序指针
            pre = cur ;
            fun(cur->right,pre); //再往右递归
        }
        
        TreeNode* Convert(TreeNode* pRootOfTree)
        {
            if(!pRootOfTree)return nullptr;
            TreeNode *pre = nullptr ;
            fun(pRootOfTree,pre);
            TreeNode *ans = pRootOfTree;
            while(ans->left)ans=ans->left;
            
            return ans;
        }
    };
  • 相关阅读:
    PATA 1071 Speech Patterns.
    PATA 1027 Colors In Mars
    PATB 1038. 统计同成绩学生(20)
    1036. 跟奥巴马一起编程(15)
    PATA 1036. Boys vs Girls (25)
    PATA 1006. Sign In and Sign Out (25)
    读取web工程目录之外的图片并显示
    DOS命令
    java连接oracle集群
    servlet
  • 原文地址:https://www.cnblogs.com/Stephen-Jixing/p/13129569.html
Copyright © 2011-2022 走看看