TypechoJoeTheme

Toasobi的博客

对称的二叉树(简单)

本文最后更新于2023年03月14日,已超过555天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

这个题我做的真的恼火。当时我的思路是对每一个子节点进行入栈操作,如果入栈时等于栈顶节点,则栈顶节点出栈。最后如果栈为空则树为对称的。但是这样就需要使用层序遍历出所有节点,再对所有节点进行入栈操作。方法也是可行的。

====================

  • 方法二:递归

====================

递归判断的是两个节点是否都为空或都不为空。以及两个节点的值是否相等。下一次递归传入的是节点1的左节点和节点2的右节点以及节点1的右节点和节点2的左节点。(二叉树是镜像的,它的根得是相同的吧,同时他的左右子节点是相互对称的。)

代码如下:

<div>class Solution {
    public boolean isSymmetric(TreeNode root) {
        if (root == null)
            return true;
        return helper(root.left, root.right);
    }

    public boolean helper(TreeNode root1, TreeNode root2) {
        if (root1 == null && root2 == null)
            return true;
        if (root1 == null || root2 == null)
            return false;
        return root1.val == root2.val && helper(root1.left, root2.right) &&
            helper(root1.right, root2.left);
    }
}</div>
朗读
赞(0)
评论 (0)