• Leetcode::Flatten Binary Tree to Linked List


    Description:

    Given a binary tree, flatten it to a linked list in-place.

    For example,
    Given

             1
            / 
           2   5
          /    
         3   4   6
    

    The flattened tree should look like:

       1
        
         2
          
           3
            
             4
              
               5
                
                 6
    分析: 这道题主要要将二叉树拉平。其实如果不要求in-place算法的话,因为这就是一个深搜遍历,pre-ordered traversal. 所以弄个栈存储一下,等下建
    很简单就搞定了。但是因为是要求in-place,则需要在递归的过程中,改变树的结构: 基本算法是对任一子树,其左右子树都已经维护好了,即左右子树都是
    拉成只有右子树的链了,然后拿到左子树的最右叶子,然后将右子树连接到其右孩子上,这样就维护好了这一子树。
     1 /**
     2  * Definition for binary tree
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     void flatten(TreeNode *root) {
    13         if(root==NULL) return;
    14         if(root->left == NULL && root->right == NULL)
    15             return;
    16             
    17         flatten(root->left);
    18         flatten(root->right);
    19         TreeNode *nod;
    20         if(root->left!=NULL)
    21         {
    22             nod = root->left;
    23             while(nod->right!=NULL)
    24                 nod = nod->right;
    25             nod->right = root->right;
    26             root->right = root->left;
    27             root->left =NULL;
    28         }
    29         return;
    30     }
    31 };
     
  • 相关阅读:
    jmeter 插件
    jmeter beanshell
    Linux awk&sed
    Linux 各文件系统配置
    Linux常用基本命令 1
    testNg自动化,读取excel的数据
    jmeter 控制器
    Web
    SQL语句
    HTML
  • 原文地址:https://www.cnblogs.com/soyscut/p/3775348.html
Copyright © 2020-2023  润新知