栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【LeetCode】相同的树+对称二叉树

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【LeetCode】相同的树+对称二叉树

#LeetCode每日一题【二叉树专题】

相同的树
https://leetcode-cn.com/problems/same-tree/分析
判断两棵树是否相等,即根节点一样、左子树一样、右子树一样;左子树和右子树也是同样的处理方式,很明显是一个递归程序实现

	// 相同的树:切分成子问题,根节点一样的情况下,比较左子树,在比较右子树,最后综合结果;
    // 递归不用考虑太多细节,只需考虑当前层级应该做啥::拿到左右子树的比较结果综合~~~
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if (p == null && q == null) {
            return true;
        }
        if (p == null || q == null) {
            return false;
        }
        if (p.val != q.val) {
            return false;
        }
        boolean left = isSameTree(p.left, q.left);
        boolean right = isSameTree(p.right, q.right);
        return left && right;
    }

LeetCode耗时:0ms

对称二叉树
https://leetcode-cn.com/problems/symmetric-tree/分析
判断一棵树是否是对称树:根节点相同的情况下,看左右子树两棵树是否对称,即左子树的左节点等于右子树的右节点,左子树的右节点等于右子树的左节点。
其实跟上面的相同二叉树很类似,相同二叉树是两棵树的左左比较、右右比较;对称二叉树是两棵树的左右比较、右左比较。实现

private boolean isSymmetric(TreeNode left, TreeNode right) {
        if (left == null && right == null) {
            return true;
        }
        if (left == null || right == null) {
            return false;
        }
        if (left.val != right.val) {
            return false;
        }
        // 两棵树是否对称,1. 根节点一样 2. 左右节点错开相等
        return isSymmetric(left.left, right.right) && isSymmetric(left.right, right.left);
    }

LeetCode耗时:0ms

总结
通过这两道相似的简单题,理解如何找到树的递归点,首先树天然就是一个递归的框架,左子树、右子树都可以看做成一颗新树,如果发现他们的处理逻辑和原树的逻辑相同,则可以使用递归。
最关键的还是要明确解决该问题的思路,有思路之后再考虑使用何种数据结构,再将思路转换为代码实现。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/732140.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号