• *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;
        }
    }
  • 相关阅读:
    Android培训准备资料之Android开发环境的搭建
    第二十天
    第十九天
    第十八天
    第十七天
    第十六天
    第十四天
    第十三天
    十二天
    十一天
  • 原文地址:https://www.cnblogs.com/hygeia/p/5707119.html
Copyright © 2020-2023  润新知