0
点赞
收藏
分享

微信扫一扫

golang力扣leetcode 101.对称二叉树

Sikj_6590 2022-04-30 阅读 48

101.对称二叉树

101.对称二叉树

101.对称二叉树

题解

题目:判断这个二叉树是不是对称的

思路
递归

队列

两者的思路都是一样的,直接看代码就能看懂了

代码

func isSymmetric(root *TreeNode) bool {
	var dfs func(left, right *TreeNode) bool
	dfs = func(left, right *TreeNode) bool {
		if left == nil && right == nil { //都是nil,为true
			return true
		}
		if left == nil || right == nil { //其中一个nil,一个不为nil
			return false
		}
		if left.Val != right.Val { //值不相等
			return false
		}
		//判断左子树的左边和右子树的右边
		//判断左子树的右边和右子树的左边
		return dfs(left.Left, right.Right) && dfs(left.Right, right.Left)
	}
	return dfs(root, root)
}
func isSymmetric(root *TreeNode) bool {
	queue := make([]*TreeNode, 0)
	queue = append(queue, root, root)
	for len(queue) != 0 {
		left, right := queue[0], queue[1]
		queue = queue[2:]
		if left == nil && right != nil { //其中一个nil,一个不为nil
			return false
		}
		if left != nil && right == nil { //其中一个nil,一个不为nil
			return false
		}
		if left == nil && right == nil {
			continue
		}
		if left.Val != right.Val { //值不相等
			return false
		}
		queue = append(queue, left.Left)
		queue = append(queue, right.Right)

		queue = append(queue, left.Right)
		queue = append(queue, right.Left)
	}
	return true
}

举报

相关推荐

0 条评论