zoukankan      html  css  js  c++  java
  • LeetCode 366. Find Leaves of Binary Tree

    原题链接在这里:https://leetcode.com/problems/find-leaves-of-binary-tree/#/description

    题目:

    Given a binary tree, collect a tree's nodes as if you were doing this: Collect and remove all leaves, repeat until the tree is empty.

    Example:
    Given binary tree 

              1
             / 
            2   3
           /      
          4   5    

    Returns [4, 5, 3], [2], [1].

    Explanation:

    1. Removing the leaves [4, 5, 3] would result in this tree:

              1
             / 
            2          

    2. Now removing the leaf [2] would result in this tree:

              1          

    3. Now removing the leaf [1] would result in the empty tree:

              []         

    Returns [4, 5, 3], [2], [1].

    题解:

    计算当前node到leaf的距离为当前node的高度,相同高度的点放在同一个list里.

    Time Complexity: O(n). leaf层用时n/2, leaf上一层用时n/4*2, 再上一层用时n/8*3. 是n(i/2^i)的和. i = 1,2,3....

    Space: O(logn), stack space. Regardless res.

    AC Java:

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     int val;
     5  *     TreeNode left;
     6  *     TreeNode right;
     7  *     TreeNode(int x) { val = x; }
     8  * }
     9  */
    10 public class Solution {
    11     public List<List<Integer>> findLeaves(TreeNode root) {
    12         List<List<Integer>> res = new ArrayList<List<Integer>>();
    13         height(root, res);
    14         return res;
    15     }
    16     
    17     private int height(TreeNode root, List<List<Integer>> res){
    18         if(root == null){
    19             return -1;
    20         }
    21         int h = 1+Math.max(height(root.left, res), height(root.right, res));
    22         if(res.size() < h+1){
    23             res.add(new ArrayList<Integer>());
    24         }
    25         res.get(h).add(root.val);
    26         return h;
    27     }
    28 }

    类似Maximum Depth of Binary Tree

    跟上Boundary of Binary Tree.

  • 相关阅读:
    闭包
    保存数据
    Browers Object Model
    JavaScript中的null和undefined
    魔法查询函数
    《黑客与画家》 读书感想
    CakePHP查询数据
    HDFS写入和读取流程
    回调函数
    JAVA中的指针
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/6741756.html
Copyright © 2011-2022 走看看