题目

leetcode:404

代码与解析


左叶子节点, 首先要弄清楚这个左叶子节点是一个什么东西,以及怎么判断,
左叶子节点从当前节点判断不出来的,要从父节点看。
依然使用递归来做

func sumOfLeftLeaves(root *TreeNode) int {
    sum := 0
    var traversal func(root *TreeNode)
    traversal = func (node *TreeNode){
        // 这个左叶子就很离谱
        if node.Left!=nil&&node.Left.Left==nil&&node.Left.Right==nil{
            // 左叶子节点, 必须通过父节点才能判断左叶子节点
            // fmt.Println(node.Left.Val)
            sum += node.Left.Val
            // return 这里不能return,下面还要遍历添加节点
        }
        if node.Left!=nil{
            traversal(node.Left)
        }
        if node.Right!=nil{
            traversal(node.Right)
        }
    }
    traversal(root)
    return sum
}

注意一点,题目中说的哪里,不能return, 至于上一篇博文的哪道题递归加回溯LeetCode:257里为什么判断到叶子结点那里,return是可以不加的!!

分类: 算法

站点统计

  • 文章总数:315 篇
  • 分类总数:20 个
  • 标签总数:193 个
  • 运行天数:1127 天
  • 访问总数:12680 人次

浙公网安备33011302000604

辽ICP备20003309号