zoukankan      html  css  js  c++  java
  • [LeetCode] Flatten Binary Tree to Linked List

    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

    大象放入冰箱几步的思路处理这问题就好了

    1.把左子树弄平, 2. 插入到根节点和根节点的右子树之间,3. 反复1。2

    思路不难,代码上有点混乱。细节实现是:把root的左子树弄成flatten的 flatten(root.left),把右子树保存起来 temp=root.right,让root.right=root.left, 然后断掉左边,root.left=null.

    然后一直走到右边的最末端,while(root.right!=null) root=root.right  然后root.right=temp,继续处理。

     一次通过。代码例如以下:

    public void flatten(TreeNode root) {
            if(root==null) return;
            TreeNode p=root;
            while(p!=null){
                if(p.left==null){
                    p=p.right;
                } else {
                    if(p.right==null) {
                        TreeNode temp=p.left;
                        p.left=null;
                        p.right=temp;
                        p=p.right;
                    } else {
                    
                    TreeNode tempRight=p.right;
                    TreeNode tempLeft=p.left;
                    p.right=null;
                    flatten(p.left);
                    p.left=null;
                    p.right=tempLeft;
                    while(p.right!=null){
                        p=p.right;
                    }
                    p.right=tempRight;
                    }
                }
                
            }
            
        }


  • 相关阅读:
    巩固复习(对以前的随笔总结)_01
    Django 项目分析后得到的某些结论
    django 命令行命令
    实现搜索视频到播放(非原创)
    python 打包
    随笔汇总,温故知新
    找伙伴
    sam-Toy Cars
    反质数
    Blue Mary的战役地图
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6907589.html
Copyright © 2011-2022 走看看