这是树的第31篇算法,力扣链接。
给定一个二叉树的 根节点
root
,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。
示例 1:
输入: root = [2,1,3] 输出: 1
拿到这道题的第一想法,我可以层级遍历选取最左节点。
func findBottomLeftValue(root *TreeNode) int {
stack := []*TreeNode{root}
result := root.Val
for len(stack) > 0 {
var newStack []*TreeNode
for _, node := range stack {
if node.Right != nil {
if node.Right.Left == nil && node.Right.Right == nil {
result = node.Right.Val
}
newStack = append(newStack, node.Right)
}
if node.Left != nil {
if node.Left.Left == nil && node.Left.Right == nil {
result = node.Left.Val
}
newStack = append(newStack, node.Left)
}
stack = newStack
}
}
return result
}