脑子短路写的题,写得太烂了
class Solution {
StringBuilder l;
StringBuilder r;
public boolean isSymmetric(TreeNode root) {
l = new StringBuilder();
r = new StringBuilder();
if(root == null) {
return true;
}
getl(root.left);
getr(root.right);
return new String(l).equals(new String(r));
}
void getl(TreeNode node) {
if(node == null) {
l.append("!");
return;
} else {
l.append(node.val);
}
getl(node.left);
getl(node.right);
}
void getr(TreeNode node) {
if(node == null) {
r.append("!");
return;
} else {
r.append(node.val);
}
getr(node.right);
getr(node.left);
}
}
标程
class Solution {
public boolean isSymmetric(TreeNode root) {
return check(root, root);
}
public boolean check(TreeNode p, TreeNode q) {
if (p == null && q == null) {
return true;
}
if (p == null || q == null) {
return false;
}
return p.val == q.val && check(p.left, q.right) && check(p.right, q.left);
}
}

这篇博客探讨了如何判断一棵二叉树是否是对称的。作者提供了两种不同的递归解决方案,一种基于左右子树的深度优先遍历,另一种通过直接比较对应节点的值和子树的对称性。代码实现清晰,展示了递归在解决此类问题中的应用。
270

被折叠的 条评论
为什么被折叠?



