Leetcode 101. 对称二叉树

101. 对称二叉树 - 力扣(LeetCode) (leetcode-cn.com)

 

 

 

思路 ——>递归

1. 首先确定什么是对称二叉树,即树的左右子树是镜像的。因此我们要分别对左右子树进行递归。

2.  递归终止判断条件:如果左右子树的节点都为空,则返回true;如果其中一个为空,另一个不为空,则认为这个数是不对称的,返回false。

3. 递归过程:判断两个节点是否值相等;判断一个节点左子树和另一个节点的右子树是否相等;判断一个节点的右子树和另一个节点的左子树是否相等。

4.返回上面三个递归过程&&的结果。

 

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */

func isSymmetric(root *TreeNode) bool {
	return check(root, root)
}

func check(node1, node2 *TreeNode) bool {
	if node1 == nil && node2 == nil {
		return true
	}
	if node1 == nil || node2 == nil {
		return false
	}
	return node1.Val == node2.Val && check(node1.Left, node2.Right) && check(node1.Right, node2.Left)
}

  

posted @ 2022-04-30 18:38  SoutherLea  阅读(28)  评论(0)    收藏  举报