965. 单值二叉树

图片.png

  1. type TreeNode struct {
  2. Val int
  3. Left *TreeNode
  4. Right *TreeNode
  5. }
  6. func isUnivalTree(root *TreeNode) bool {
  7. if root == nil {
  8. return true
  9. }
  10. stack := []*TreeNode{root}
  11. var v = root.Val
  12. for len(stack) > 0 {
  13. size := len(stack)
  14. for i := 0; i < size; i++ {
  15. node := stack[i]
  16. if node.Val != v {
  17. return false
  18. }
  19. if node.Left != nil {
  20. stack = append(stack, node.Left)
  21. }
  22. if node.Right != nil {
  23. stack = append(stack, node.Right)
  24. }
  25. }
  26. stack = stack[size:]
  27. }
  28. return true

递归

  1. func isUnivalTree1(root *TreeNode) bool {
  2. if root == nil {
  3. return true
  4. }
  5. if root.Left != nil && root.Val != root.Left.Val {
  6. return false
  7. }
  8. if root.Right != nil && root.Val != root.Right.Val {
  9. return false
  10. }
  11. return isUnivalTree(root.Left) && isUnivalTree(root.Right)
  12. }