Toasobi
对称的二叉树(简单)
本文最后更新于2023年03月14日,已超过664天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
这个题我做的真的恼火。当时我的思路是对每一个子节点进行入栈操作,如果入栈时等于栈顶节点,则栈顶节点出栈。最后如果栈为空则树为对称的。但是这样就需要使用层序遍历出所有节点,再对所有节点进行入栈操作。方法也是可行的。
====================
- 方法二:递归
====================
递归判断的是两个节点是否都为空或都不为空。以及两个节点的值是否相等。下一次递归传入的是节点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>