题目链接
叶子相似的树
题目描述
注意点
- 给定的两棵树结点数在 [1, 200] 范围内
- 给定的两棵树上的值在 [0, 200] 范围内
解答思路
- 深度优先遍历按顺序找到两棵树各自的叶子节点并存储到两个list中,随后比较两个list是否相同即可
代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean leafSimilar(TreeNode root1, TreeNode root2) {
List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
dfs(root1, list1);
dfs(root2, list2);
return list1.equals(list2);
}
public void dfs(TreeNode root, List<Integer> list) {
if (root == null) {
return;
}
if (root.left == null && root.right == null) {
list.add(root.val);
}
dfs(root.left, list);
dfs(root.right, list);
}
}
关键点
- 深度优先遍历的思想