872. 叶子相似的树

题目

请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列

示例1:

1
2
输入:root1 = [3,5,1,6,2,9,8,null,null,7,4], root2 = [3,5,1,6,7,4,2,null,null,null,null,null,null,9,8]
输出:true

示例2:

1
2
输入:root1 = [1,2,3], root2 = [1,3,2]
输出:false

提示:

  • 给定的两棵树结点数在 [1, 200] 范围内
  • 给定的两棵树上的值在 [0, 200] 范围内

解法

解法一:

java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public boolean leafSimilar(TreeNode root1, TreeNode root2) {
List<Integer> l1 = new ArrayList<>();
getLeaf(root1, l1);
List<Integer> l2 = new ArrayList<>();
getLeaf(root2, l2);
if (l1.size() != l2.size()) {
return false;
}

for (int i = 0;i < l1.size();i++) {
if (l1.get(i) != l2.get(i)) {
return false;
}
}

return true;
}

private void getLeaf(TreeNode root, List<Integer> l1) {
if (Objects.isNull(root)) {
return;
}

if (Objects.isNull(root.left) && Objects.isNull(root.right)) {
// leaf
l1.add(root.val);
}

getLeaf(root.left, l1);
getLeaf(root.right, l1);
}
0%