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

    解法一:https://discuss.leetcode.com/topic/49400/1-ms-easy-understand-java-solution

    O(n^2)

    DFS

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public List<List<Integer>> findLeaves(TreeNode root) {
            List<List<Integer>> leavesList = new ArrayList< List<Integer>>();
            List<Integer> leaves = new ArrayList<Integer>();
            while(root != null) {
                if(isLeave(root, leaves)) root = null;
                leavesList.add(leaves);
                leaves = new ArrayList<Integer>();
            }
            return leavesList;
        }
        
        public boolean isLeave(TreeNode node, List<Integer> leaves) {
            if (node.left == null && node.right == null) {
                leaves.add(node.val);
                return true;
            }
            if (node.left != null) {
                 if(isLeave(node.left, leaves))  node.left = null;
            }
            if (node.right != null) {
                 if(isLeave(node.right, leaves)) node.right = null;
            }
            return false;
        }
    }
  • 相关阅读:
    字典树Trie
    转载一个不错的LRU cache
    git和github基础入门
    git基础之常用操作
    python矩阵和向量的转置问题
    梯度下降法注意要点
    python 浮点数问题
    Python数据分析基础——读写CSV文件2
    Python数据分析基础——读写CSV文件
    读书笔记----javascript函数编程
  • 原文地址:https://www.cnblogs.com/hygeia/p/5707119.html
Copyright © 2011-2022 走看看