101. Symmetric Tree
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
Solution1:
class Solution {
public boolean isSymmetric(TreeNode root) {
return root == null || isSymmetricHelp(root.left, root.right);
}
public boolean isSymmetricHelp(TreeNode left, TreeNode right) {
if (left == null)
return right == null;
if (right == null)
return false;
if (left.val != right.val) { //left.val不一定有值,所以要避免空指针异常
return false;
}
return isSymmetricHelp(left.left, right.right) && isSymmetricHelp(left.right, right.left);
}
}
Solution2://使用栈存放TreeNode,
class Solution {
public boolean isSymmetric(TreeNode root) {
if (root == null) return true;
Stack<TreeNode> s = new Stack<>();
s.push(root.left);
s.push(root.right);
while (!s.empty()) {
TreeNode n1 = s.pop();
TreeNode n2 = s.pop();
if (n1 == null && n2 == null) continue;
if (n1 == null || n2 == null || n1.val != n2.val) {
return false; //上边的if已经考虑了n1和n2都是null了,所以如果上述if条件不满足且n1或n2又出现 null,那么肯定是一个null一个有数值,所以返回false
}
stack.push(n1.left);
stack.push(n2.right);
stack.push(n1.right);
stack.push(n2.left);
}
return true;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix