101. 对称二叉树
题目
- 给你一个二叉树的根节点 root , 检查它是否轴对称。
示例 1:
输入:root = [1,2,2,3,4,4,3]
输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3]
输出:false
- 和100题一样,跳转链接:https://www.cnblogs.com/lushuang55/p/17879581.html
javascript
题解:递归
- 由于给的函数只能传一个参数,所以重新定义一个含两个参数的函数
var isSymmetric = function(root) {
if(root === null) return true
//重写一个两个参数的函数
const isMirror=(left,right)=>{
//左右为空
if(left === null && right === null) return true
//左右只有一个为空的情况
if(left === null || right === null) return false
//左右值不相等
if(left.val !== right.val) return false
//递归判断对称的节点部分(左左与右右、左右与右左)
return(isMirror(left.left, right.right) && isMirror(left.right, right.left))
}
return isMirror(root.left, root.right)
};
python
题解一、分成左子树和右子树判断
- 由于给的函数只能传一个参数,所以重新定义一个含两个参数的函数
class Solution:
def isSymmetric(self, root: Optional[TreeNode]) -> bool:
def compareTree(left,right):
if left==None and right==None:#左子树和右子树都空
return True
elif (left == None and right != None) or (left != None and right == None):#左子树、右子树空一个
return False
elif left.val != right.val:#检查值
return False
return compareTree(left.left,right.right) and compareTree(left.right,right.left)#递归左、右子树
if root is None:#空树
return True
return compareTree(root.left,root.right)#调用函数
题解二、前序遍历+递归
- 不仅要判断节点带值的情况,还要考虑空节点位置是否相同
class Solution:
def isSymmetric(self, root: Optional[TreeNode]) -> bool:
if root is None:
return True
if (root.left == None and root.right != None) or (root.left != None and root.right == None):
return False
if root.left != root.right:
return False
return isSymmetric(root.left.left,root.right.right) and isSymmetric(root.left.right,root.right.left)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人