Leaf-Similar Trees

Consider all the leaves of a binary tree.  From left to right order, the values of those leaves form a leaf value sequence.

For example, in the given tree above, the leaf value sequence is (6, 7, 4, 9, 8).

Two binary trees are considered leaf-similar if their leaf value sequence is the same.

Return true if and only if the two given trees with head nodes root1 and root2 are leaf-similar.

Note:

  • Both of the given trees will have between 1 and 100 nodes.

这题需要注意的是树的形态可以不同,只要leave相同即可。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
     ArrayList<Integer> list1 = new ArrayList<Integer>();
     ArrayList<Integer> list2 = new ArrayList<Integer>();
     public boolean leafSimilar(TreeNode root1, TreeNode root2) {
         getLeaves(root1,list1);
         getLeaves(root2,list2);
         if(list1.size()!=list2.size()) return false;
         for(int i=0;i<list1.size();i++)
         {
             if(list1.get(i)!=list2.get(i)) return false;
         }
         return true;
    }

    public void getLeaves(TreeNode node, ArrayList<Integer> list) {
        if(node.left==null&&node.right==null) list.add(node.val);
        if(node.left!=null) getLeaves(node.left, list);
        if(node.right!=null) getLeaves(node.right,list);
    }
}

猜你喜欢

转载自www.cnblogs.com/hygeia/p/9789050.html