zoukankan      html  css  js  c++  java
  • 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

    每个节点的右节点都是preorder traverse的下一个节点 -> 应该先 反preorder遍历 (即node.right->node.left->node) 到最后,从最后开始relink

    time: O(n), space: O(height)

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        TreeNode prev = null;
        
        public void flatten(TreeNode root) {
            if(root == null) {
                return;
            }
            
            flatten(root.right);
            flatten(root.left);
            
            root.right = prev;
            root.left = null;
            prev = root;
        }
    }
  • 相关阅读:
    上传项目到githug
    架构漫谈阅读笔记01
    连接清华镜像
    Java-Spark
    推荐系统
    数据湖技术
    如何做好架构划分
    构建之法阅读笔记 02
    构建之法阅读笔记01
    Tensorflow安装
  • 原文地址:https://www.cnblogs.com/fatttcat/p/10202108.html
Copyright © 2011-2022 走看看