题解 | #对称的二叉树#
https://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb
# 思路:
利用迭代,定义一个函数,传入左右两个节点(left,right),对两个节点进行判断,如果有一个节点为 nil,则直接返回 false,如果两个节点都为 nil,则到达了叶子节点,返回 true。如果两个节点都不为 nil,则判断这两个节点的值是否相等,不相等则返回 false。最后递归调用该函数,判断 (left.Left, right.Right) 和 (left.Right, right.Left) 是否是对称的。
# 代码
func isSymmetrical( pRoot *TreeNode ) bool { // write code here return Inner(pRoot, pRoot) } func Inner(left, right *TreeNode) bool { if left == nil && right != nil { return false } else if left != nil && right == nil { return false } else if left == nil && right == nil { return true } if left.Val != right.Val { return false } return Inner(left.Left, right.Right) && Inner(left.Right, right.Left) }