101.E 对称二叉树

Problem: 101. 对称二叉树arrow-up-right

思路

思路1:递归法。对于两颗树,对称的条件是:

  • root1的左子树和root2的右子树对称

  • root1的右子树和root2的左子树对称

  • root1.Val == root2.Val

思路2:迭代法。整体思路与方法1类似,用一个队列存储两颗子树的节点,加入队列时两颗子树交叉按照左右右左的顺序添加,然后判断队列中相邻两个节点的值是否相等。

Code

代码1:

func isSymmetricV1(root *TreeNode) bool {
	if root == nil {
		return true
	}
	return symmetric(root.Left, root.Right)
}

func symmetric(root1 *TreeNode, root2 *TreeNode) bool {
	if root1 == nil && root2 == nil {
		return true
	}

	if root1 == nil || root2 == nil {
		return false
	}

	return symmetric(root1.Left, root2.Right) && symmetric(root1.Right, root2.Left) && root1.Val == root2.Val
}

代码2:

Last updated