• 114. Flatten Binary Tree to Linked List 把二叉树变成链表


    [抄题]:

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

    For example, given the following tree:

        1
       / 
      2   5
     /    
    3   4   6
    

    The flattened tree should look like:

    1
     
      2
       
        3
         
          4
           
            5
             
              6
    

     

     [暴力解法]:

    时间分析:

    空间分析:

     [优化后]:

    时间分析:

    空间分析:

    [奇葩输出条件]:

    [奇葩corner case]:

    [思维问题]:

    知道大概,以为要用helper函数,其实可以不用,直接在主函数中写

    [英文数据结构或算法,为什么不用别的数据结构或算法]:

    tree中按正常的顺序prev.right = root连总会返回原来的tree,+右中左两次取反才能形成中序链表

    [一句话思路]:

    [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

    [画图]:

    [一刷]:

    [二刷]:

    [三刷]:

    [四刷]:

    [五刷]:

      [五分钟肉眼debug的结果]:

    [总结]:

    tree中按正常的顺序prev.right = root连总会返回原来的tree,+右中左两次取反才能形成中序链表

    [复杂度]:Time complexity: O(n) Space complexity: O(n)

    [算法思想:迭代/递归/分治/贪心]:

    [关键模板化代码]:

    [其他解法]:

    [Follow Up]:

    [LC给出的题目变变变]:

     [代码风格] :

     [是否头一次写此类driver funcion的代码] :

     [潜台词] :

    class Solution {
        TreeNode prev = null;
        
        public void flatten(TreeNode root) {
            //when to exit
            if (root == null) return ;
            
            //r, l , reverse
            flatten(root.right);
            flatten(root.left);
            
            root.right = prev;
            root.left = null;
            prev = root;
        }
    }
    View Code
  • 相关阅读:
    P2569 [SCOI2010]股票交易
    P1963 [NOI2009]变换序列
    My thoughts after NOIP 2018(2)
    洛谷 P3159(BZOJ 2668)[CQOI2012]交换棋子
    My thoughts after NOIP 2018(1)
    洛谷【P1523】旅行商的背包(算法导论 15-1) 题解
    洛谷【P2458】[SDOI2006]保安站岗 题解 树上DP
    【BLUESKY的NOIp模拟赛】解题报告
    bzoj4400
    luogu2034
  • 原文地址:https://www.cnblogs.com/immiao0319/p/9428683.html
Copyright © 2020-2023  润新知