zoukankan      html  css  js  c++  java
  • 将二叉搜索树转换为排序双链表

     1 class Solution {
     2 public:
     3     TreeNode *head=NULL,*prev=NULL;
     4     TreeNode* Convert(TreeNode* root)
     5     {
     6         if(root == NULL) return NULL;
     7         if(root->left == NULL && head == NULL) head=prev=root;//满足这个条件的一定是最左下角的叶子节点或根节点,作为排序链表的头部,此后head固定
     8         Convert(root->left);                                    //转换左子树
     9         if(prev != root)                         //prev记录了上一个节点,将其与当前节点串起来,串起来后,prev更新为当前节点,由于第一个节点的设置,所以prev!=root才行
    10         {
    11              prev->right=root;
    12              root->left=prev;
    13              prev=root;
    14         }
    15         Convert(root->right);                          //转换右子树
    16         return head;
    17     }
    18 };

    其实就是按照中序遍历树节点,然后将上一个节点与当前节点串接起来。

  • 相关阅读:
    Next Permutation
    SpringMVC配置信息
    Servlet详解(转载)
    Length of Last Word
    Maximum Subarray**
    Divide Two Integers
    Generate Parentheses***
    http解码-2
    编码-1
    扫描工具对比
  • 原文地址:https://www.cnblogs.com/Zbtrik/p/7270350.html
Copyright © 2011-2022 走看看