题解 | #相逆叶子#

相逆叶子

https://www.nowcoder.com/practice/41c7b0e8710e43ca9f328bf06ea2aff3

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root1 TreeNode类 
     * @param root2 TreeNode类 
     * @return bool布尔型
     */
    public boolean leafSimilar (TreeNode root1, TreeNode root2) {
        // write code here
        List<Integer> list1 = new ArrayList<>();
        List<Integer> list2 = new ArrayList<>();
        inOrder(root1, list1);
        inOrder(root2, list2);
        return check(list1, list2);
    }
    private void inOrder(TreeNode root, List<Integer> list) {
        if (root == null) return;
        inOrder(root.left, list);
        if (root.left == null && root.right == null) list.add(root.val);
        inOrder(root.right, list);
    }
    private boolean check(List<Integer> list1, List<Integer> list2) {
        if (list1.size() != list2.size()) return false;
        int size = list1.size();
        for (int i = 0; i < size; i++) {
            if (list1.get(i) != list2.get(size - i - 1)) return false;
        }
        return true;
    }
}
  • 利用二叉树的中序遍历,将所有的叶子节点存储到一个List集合中。叶子节点:左右子树都是null。
  • 判断两个list集合是否为逆序的
  • 如果list中元素个数不相等,则直接返回false;
  • 遍历两个list集合,一个从左向右,另一个从右向左,取值判断是否相等,不相等直接返回false;
  • 循序退出后,说明两个集合是逆序的,返回true。
#二叉树的遍历#
线性表基础 文章被收录于专栏

链表、递归、栈

全部评论

相关推荐

2024-12-20 18:56
已编辑
武汉轻工大学 后端
牛牛大啊:er图都冒出来了😂
点赞 评论 收藏
分享
02-12 00:59
已编辑
哈尔滨工业大学 产品经理
华为 软件开发岗 20.6*16薪 本科
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务