首页 > 其他分享 >LeetCode 513. 找树左下角的值

LeetCode 513. 找树左下角的值

时间:2023-05-19 18:24:43浏览次数:47  
标签:node int 找树 res query 左下角 maxdeep root 513

题目链接:LeetCode 513. 找树左下角的值

题意:

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

解题思路:

首先明确本题是要找最底层最左边的节点,
因此迭代法,可以采用层次遍历,res每次记录每一层的最左边的节点,当遍历结束时,res表示的就是最底层,最左边的节点。

迭代法:

迭代代码如下:

func findBottomLeftValue(root *TreeNode) int {
    var res int
    if root == nil {
        return 0
    }
    var query []*TreeNode
    query = append(query,root)
    for len(query) != 0 {
        n:=len(query)
        res = query[0].Val
        for n > 0 {
            n--
            node := query[0]
            query = query[1:]
            if node.Left != nil{
                query = append(query,node.Left)
            }
            if node.Right != nil{
                query = append(query,node.Right)
            }
        }
    }
    return res
}

递归法:

对于递归法,使用 maxdeep 记录树的最大深度,在递归遍历的过程中,及时更新 maxdeep 的值和 res 的值,

递归代码:

 var res int
 var maxdeep int
func findBottomLeftValue(root *TreeNode) int {
    res = 0
    maxdeep = 0
    dfs(root,1)

    return res
}
func dfs(root *TreeNode,d int){
    if root == nil {
        return
    }
    if d > maxdeep{
        maxdeep = d
        res = root.Val
    }
    dfs(root.Left,d+1)
    dfs(root.Right,d+1)
}

标签:node,int,找树,res,query,左下角,maxdeep,root,513
From: https://www.cnblogs.com/lxing-go/p/17415985.html

相关文章