872.叶子相似的树(二叉树,递归)
举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8)
的树。
如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。
如果给定的两个根结点分别为 root1
和 root2
的树是叶相似的,则返回 true
;否则返回 false
。
/**
* 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> l1=new ArrayList<>();
List<Integer> l2=new ArrayList<>();
def(l1,root1);
def(l2,root2);
if(l1.size()==l2.size()){
for(int i=0;i<l1.size();i++){
if(!l1.get(i).equals(l2.get(i))){
return false;
}
}
return true;
}
return false;
}void def(List<Integer> List,TreeNode root){
if(root==null)return;
if(root.right==null&&root.left==null){
List.add(root.val);return;
}
def(List,root.left);
def(List,root.right);
}
}