算法训练营day16,二叉树5-1

type TreeNode struct {

  Val   int

  Left  *TreeNode

  Right *TreeNode

}

513. 找树左下角的值

//解题思路,用层序遍历即可

func findBottomLeftValue(root *TreeNode) int {

  curList := []*TreeNode{root}

  if root == nil {

    return 0

  }

  //用切片模拟队列存放当前层节点

  res := []int{}

  for len(curList) > 0 {

    //生成下一层

    nextList := []*TreeNode{}

    vals := []int{}

    for _, v := range curList {

      //收集当前层数值

      vals = append(vals, v.Val)

      if v.Left != nil {

        nextList = append(nextList, v.Left)

      }

      if v.Right != nil {

        nextList = append(nextList, v.Right)

      }

    }

    //将下一层变成当前层

    curList = nextList

    res = vals

  }

  return res[0]

}

//112. 路径总和

//解题思路,targetSum层层递减,当到叶子节点时,targetSum等于0说找到了相关路径,返回true否则返回false

func hasPathSum(root *TreeNode, targetSum int) bool {

  if root == nil {

    return false

  }

  targetSum = targetSum - root.Val

  if root.Left == nil && root.Right == nil {

    if targetSum == 0 {

      return true

    }

    return false

  }

  if root.Left != nil {

    if hasPathSum(root.Left, targetSum) {

      return true

    }

  }

  if root.Right != nil {

    if hasPathSum(root.Right, targetSum) {

      return true

    }

  }

  return false

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值