872.叶子相似的树(二叉树,递归)

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);
        }
}
posted @ 2021-05-10 18:55  RenVei  阅读(92)  评论(0编辑  收藏  举报