1495. 叶子相似的树
Consider all the leaves of a binary tree. From left to right order, the values of those leaves form a leaf value sequence.
![](https://i-blog.csdnimg.cn/blog_migrate/9f6853bb9cfe3faa42ea4c1dafe409bd.png)
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.
样例
Example 1:
Input: {1,#,2,3}, {1,2,#,3}
Output:
Explaination:
the first tree:
1
\
2
/
3
the second tree:
1
/
2
/
3
The leaf value sequence is: [3], so the same
Example 2:
Input: {1,#,2,3}, {1,2,#,3}
Output:
Explaination:
the first tree:
1
\
2
/
3
the second tree:
1
/ \
2 3
The first leaf value sequence is: [3], the second tree is: [2, 3], so it is not the same
注意事项
给定的两颗树可能会有 1 到 100 个结点。
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/**
* @param root1: the first tree
* @param root2: the second tree
* @return: returns whether the leaf sequence is the same
*/
public boolean leafSimilar(TreeNode root1, TreeNode root2) {
ArrayList<Integer> arrayList1=helper(root1, new ArrayList<Integer>());
ArrayList<Integer> arrayList2=helper(root2, new ArrayList<Integer>());
if (arrayList1.size()!=arrayList2.size())return false;
for (int i = 0; i <arrayList1.size() ; i++) {
// System.out.println(arrayList1.get(i));
if (!arrayList1.get(i).equals(arrayList2.get(i))){
return false;
}
}
return true;
}
public ArrayList<Integer> helper(TreeNode root1, ArrayList<Integer> list) {
if (root1 == null) return list;
if (root1.left == null &&root1.right == null) list.add(root1.val);
if (root1.left != null) list=helper(root1.left, list);
if (root1.right != null) list=helper(root1.right, list);
return list;
}
}