zoukankan      html  css  js  c++  java
  • [leetcode]366. Find Leaves of Binary Tree捡树叶

    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:

    Input: [1,2,3,4,5]
      
              1
             / 
            2   3
           /      
          4   5    
    
    Output: [[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:

              []         

    题意:

    逐层移除二叉树的叶节点。

    Solution1: DFS

    解本题需要的背景知识: 【height】The height of a node is the number of edges from the node to the deepest leaf.

    For instance,

    node 1 has height of 2
    node 2 has height of 1
    node 4 has height of 0
    node 5 has height of 0
    node 3 has height of 0
    Based on the output, we need to gather up all the nodes with height 0, we then gather up all the nodes with height 1, and then all the nodes with height 2

    所以我们的target就是边traversal given tree边拿到each node's height, 把不同height的node放到result里

    code

     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 class Solution {
    11    public List<List<Integer>> findLeaves(TreeNode root) {
    12         List<List<Integer>> res = new ArrayList<>();
    13         helper(res, root);
    14         return res;
    15     }
    16     //helper function to return the height of current node
    17     private int helper(List<List<Integer>> res, TreeNode root) {
    18         if (root == null) return -1;
    19         int left = helper(res, root.left);
    20         int right = helper(res, root.right);
    21         int height = Math.max(left, right) + 1;
    22         if (res.size() == height) {
    23             res.add(new ArrayList<>());
    24         }
    25         res.get(height).add(root.val);
    26         return height;
    27     }
    28 }
  • 相关阅读:
    编码上的小改进
    自定义HttpFilter模块完善
    Log4Net日志分类和自动维护
    也来写写基于单表的Orm(使用Dapper)
    要知道的DbProviderFactory
    仿Orm 自动生成分页SQL
    【问题帖】压缩图片大小至指定Kb以下
    [leetcode]Find Minimum in Rotated Sorted Array
    [leetcode]Maximum Product Subarray
    join
  • 原文地址:https://www.cnblogs.com/liuliu5151/p/10014700.html
Copyright © 2011-2022 走看看