请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1
/ \
2 2
\ \
3 3
Key := 递归 每次对比对称节点
递归函数: 如果 两个节点同时对比到叶子节点 则返回 true
一个对称节点首先自己到达 叶子节点 返回false
两个几点的值不相等 返回false
递归 left.LEFT RIGHT.RIGHT && left.Right right.Left
还是太菜了
func isSymmetric(root *TreeNode) bool {
if root == nil{
return true
}
return isSym(root.Left,root.Right)
}
func isSym (left,right *TreeNode)bool{
if left==nil && right ==nil{
return true
}
if left==nil || right ==nil{
return false
}
if left.Val != right.Val{
return false
}
return isSym(left.Left,right.Right) && isSym(left.Right,right.Left)
}