/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ funcfindBottomLeftValue(root *TreeNode)int { res := -1 queue := []*TreeNode{}
if root == nil { return-1 }
queue = append(queue, root) //res 在哪里更新呢? forlen(queue) > 0 { size := len(queue) // 遍历每一层 for i := 0; i < size; i++ { top := queue[0] queue = queue[1:] // 获取每一层的最左边的位置,更新res if i == 0 { res = top.Val } if top.Left != nil { queue = append(queue, top.Left) } if top.Right != nil { queue = append(queue, top.Right) } }
} return res }
// 迭代2 每层用一个切片
funcfindBottomLeftValue(root *TreeNode)int { res := -1 queue := []*TreeNode{}
if root == nil { return-1 } // 通过另外一个切片来添加的解法也要尝试学习一下 queue = append(queue, root) //res 在哪里更新呢? forlen(queue) > 0 { size := len(queue) // 使用nextqueue 保存每一层,然后追加到queue nextqueue := []*TreeNode{} for i := 0; i < size; i++ { top := queue[0] queue = queue[1:] res = nextqueue[0] if top.Left != nil { nextqueue = append(nextqueue, top.Left) }