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

    直接通过中序遍历来解。但是需要设置两个节点记录每个子树排序后的第一和最后一个节点,尤其是最后一个,因为最后一个节点是由于连接所需。

    上代码:

    class Solution {
    public:
       
        TreeNode* Convert(TreeNode* pRootOfTree)
        {
            TreeNode* head=NULL;//每个子树排序后的第一个节点
            TreeNode* tail=NULL;//每个子树排序后的最后一个节点
            ConvertHelp(pRootOfTree,head,tail);
            return head;
        }
     void ConvertHelp(TreeNode* pRootOfTree,TreeNode* &head,TreeNode* &tail) {
         if(pRootOfTree==NULL) return;
         ConvertHelp(pRootOfTree->left,head,tail);
         if (tail == NULL) {//说明找到了中序遍历的第一个节点,把其作为链表头节点
             tail = pRootOfTree;
             head = pRootOfTree;
         } else {
             tail->right = pRootOfTree;
             pRootOfTree->left = tail;
             tail = pRootOfTree;
         }
         ConvertHelp(pRootOfTree->right,head,tail);
        }
    };

    法二:(思路同上,但是更简洁)

    class Solution {
    public:
        TreeNode* Convert(TreeNode* pRootOfTree)
        {
            if(pRootOfTree == nullptr) return nullptr;
            TreeNode* pre = nullptr;
             
            convertHelper(pRootOfTree, pre);
             
            TreeNode* res = pRootOfTree;
            while(res ->left)
                res = res ->left;
            return res;
        }
         
        void convertHelper(TreeNode* cur, TreeNode*& pre)
        {
            if(cur == nullptr) return;
             
            convertHelper(cur ->left, pre);
             
            cur ->left = pre;
            if(pre) pre ->right = cur;
            pre = cur;
             
            convertHelper(cur ->right, pre);
             
             
             
        }
    };
  • 相关阅读:
    centos7上以RPM方式安装MySQL5.6
    区别和详解:jQuery extend()和jQuery.fn.extend()
    jQuery笔记总结
    CSS Hack的一些知识
    12种不宜使用的javascript的语法
    64位Win7系统下vs2010调试无法连接oracle解决办法
    HashCode()与equals()深入理解
    Java ArrayList自动扩容机制
    Java基础知识
    MySQL的MVCC机制
  • 原文地址:https://www.cnblogs.com/inception6-lxc/p/9276684.html
Copyright © 2011-2022 走看看