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); } }
转载于:https://www.cnblogs.com/hygeia/p/9789050.html
相关资源:JAVA上百实例源码以及开源项目