题目链接: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