404. 左叶子之和

  1. /**
  2. * Definition for a binary tree node.
  3. * type TreeNode struct {
  4. * Val int
  5. * Left *TreeNode
  6. * Right *TreeNode
  7. * }
  8. */
  9. func sumOfLeftLeaves(root *TreeNode) int {
  10. if root == nil {
  11. return 0
  12. }
  13. return dfs(root)
  14. }
  15. func isLeaf(node *TreeNode) bool {
  16. return node.Left == nil && node.Right == nil
  17. }
  18. func dfs(root *TreeNode) (ans int) {
  19. if root.Left != nil {
  20. if isLeaf(root.Left) {
  21. ans += root.Left.Val
  22. } else {
  23. ans += dfs(root.Left)
  24. }
  25. }
  26. if root.Right != nil && !isLeaf(root.Right) {
  27. ans += dfs(root.Right)
  28. }
  29. return
  30. }