问题
判断对称二叉树
例如,二叉树 [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
方法一:递归【最优】
递归检查:
L 的 左子节点 和 R 的 右子节点 对称;
L 的 右子节点 和 R 的 左子节点 对称
func isSymmetric(root *TreeNode) bool {
if root == nil {
return true
}
return fun(root.Left, root.Right)
}
func fun(L *TreeNode, R *TreeNode) bool {
if L == nil && R == nil {
return true
} else if L != nil && R != nil && L.Val == R.Val {
return fun(L.Right, R.Left) && fun(L.Left, R.Right)
} else {
return false
}
}
方法二:层次遍历
每一层遍历结果的value存储在nums中,空结点存储-1,判断每一层的结果是不是对称数组
当nums中全部是-1,遍历结束。
func isSymmetric1(r