题目
101 对称二叉树
题目描述
给定一个二叉树,检查它是否是镜像对称的
思路
1.根节点为nil则是对称二叉树
2.否则校验左子数和右子数是否相等
3.如果左子数和右子数相等,则校验左子数的左子数和右子数的右子数是否相等 && 左子数的右子数与右子数的左子数是否相等
4.对2.3两步骤进行递归校验
示例
data := &TreeNode{
Val:1,
Left:&TreeNode{
Val:2,
Left:&TreeNode{Val:3},
Right:&TreeNode{Val:4},
},
Right:&TreeNode{
Val:2,
Left:&TreeNode{Val:4},
Right:&TreeNode{Val:3},
},
}
3241423
返回
代码
package leetcode
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
// isSymmetric
// 对称二叉树
func isSymmetric(root *TreeNode) bool {
// 根节点为nil则是对称二叉树
if root == nil{
return true
}
var order func(nodeL, nodeR *TreeNode) bool
order = func(nodeL, nodeR *TreeNode) bool {
// 同时为空
if nodeL==nil && nodeR==nil{
return true
}
// 一个为空一个不为空
if nodeL==nil && nodeR != nil{
return false
}
if nodeL!=nil && nodeR==nil{
return false
}
// 递归校验 左节点的左子数与右节点的右子数 左节点的右子数和右节点的左子数
if(nodeL.Val == nodeR.Val){
return order(nodeL.Left, nodeR.Right) && order(nodeL.Right, nodeR.Left)
}
return false
}
return order(root.Left, root.Right)
}
参考
来源:力扣(LeetCode)
链接:leetcode-cn.com/problems/sy…
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。