判断是否是对称二叉树、是否相同的树
101. 对称二叉树
//101. 对称二叉树
func isSymmetricv2(root *TreeNode) bool {
if root==nil{
return false
}
arr:=[]*TreeNode{root,root}
for len(arr)>0{
l:=arr[0]
r:=arr[1]
arr=arr[2:]
if l == nil && r == nil {
continue
}
if l == nil || r == nil {
return false
}
if l.Val != r.Val {
return false
}
arr=append(arr, r.Left)
arr=append(arr, l.Right)
arr=append(arr, r.Right)
arr=append(arr, l.Left)
}
return true
}
func isSymmetricV1(root *TreeNode) bool {
checkisSymmetricV1(root,root)
return true
}
func checkisSymmetricV1(left,right *TreeNode) bool{
if left==nil && right==nil{
return true
}
if left==nil || right==nil{
return false
}
return left.Val==right.Val && checkisSymmetricV1(left.Left,right.Right) && checkisSymmetricV1(left.Right,right.Left)
}
100. 相同的树
func isSameTree(p *TreeNode, q *TreeNode) bool {
if p==nil && q==nil{
return true
}
if p==nil || q==nil{
return false
}
return p.Val==q.Val && isSameTree(p.Right,q.Right) && isSameTree(p.Left,q.Left)
}