力扣刷题第三十一天--二叉树

前言

都是递归和迭代,看着很简单,还是写不出来,理解还是不够。。。

内容

一、左叶子之和

404.左叶子之和

给定二叉树的根节点 root ,返回所有左叶子之和。

递归
func sumOfLeftLeaves(root *TreeNode) int {
  
   if root==nil{
       return 0
   }
    
          left:=sumOfLeftLeaves(root.Left)
        if root.Left!=nil&&root.Left.Left==nil&&root.Left.Right==nil{

           left=root.Left.Val
    
        }
           right:=sumOfLeftLeaves(root.Right)
    
        return left+right
    }
二、找树左下角的值

513.找树左下角的值

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

假设二叉树中至少有一个节点。

深度优先搜索
 var depth int
 var result int
func findBottomLeftValue(root *TreeNode) int {
    depth,result=0,0
    dfs(root,1)
    return result
}

func dfs(root *TreeNode,d int){
    if root==nil{
        return 
    }
    if root.Left==nil&&root.Right==nil&&depth<d{
        depth=d
        result=root.Val
    }
    dfs(root.Left,d+1)
    dfs(root.Right,d+1)
}
广度优先搜索
func findBottomLeftValue(root *TreeNode)int{
    var ans int
    queue:=[]*TreeNode{root}
    for len(queue)>0{
        node:=queue[0]
        queue=queue[1:]
        if node.Right!=nil{
            queue=append(queue,node.Right)
        }
        if node.Left!=nil{
            queue=append(queue,node.Left)
        }
        ans=node.Val
    }
    return ans
}
理解误区

理解有误,晚上看视频才知道。最底层最左边,不一定非得是左子树。比如下图,输出为5

 

最后

心思不在写题上。。。

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值