965. 单值二叉树
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func isUnivalTree(root *TreeNode) bool {
if root == nil {
return true
}
stack := []*TreeNode{root}
var v = root.Val
for len(stack) > 0 {
size := len(stack)
for i := 0; i < size; i++ {
node := stack[i]
if node.Val != v {
return false
}
if node.Left != nil {
stack = append(stack, node.Left)
}
if node.Right != nil {
stack = append(stack, node.Right)
}
}
stack = stack[size:]
}
return true
递归
func isUnivalTree1(root *TreeNode) bool {
if root == nil {
return true
}
if root.Left != nil && root.Val != root.Left.Val {
return false
}
if root.Right != nil && root.Val != root.Right.Val {
return false
}
return isUnivalTree(root.Left) && isUnivalTree(root.Right)
}