[Day38]-[二叉树]- 二叉树的右视图
作者:方勇(gopher)
- 2022 年 5 月 07 日
本文字数:611 字
阅读完需:约 2 分钟
199. 二叉树的右视图
给定一个二叉树的 根节点
root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例 1:
输入: [1,2,3,null,5,null,4]输出: [1,3,4]
复制代码
示例 2:
输入: [1,null,3]输出: [1,3]
复制代码
示例 3:
输入: []输出: []复制代码
题解:
func TestRightSideView(t *testing.T) { var root = &TreeNode{ // 初始化一棵树 Val: 1, Left: &TreeNode{ Val: 2, Right: &TreeNode{ Val: 5, }, }, Right: &TreeNode{ Val: 3, Right: &TreeNode{ Val: 4, }, }, } var bfs func(root *TreeNode, level int) []int // 广度搜索 bfs = func(root *TreeNode, level int) []int { var values []int // 存放每层最右端节点的值 if root == nil { // 注意root为空的情况 return values } queue := []*TreeNode{root} // 初始化队列 for level := 0; len(queue) > 0; level++ { // 注意queue是否为空 q := queue queue = nil values = append(values, q[len(q)-1].Val) // 取出队列最右侧的元素即为右节点的值 for _, node := range q { // 先放左节点,再放右节点,注意顺序,方便后续取值 if node.Left != nil { queue = append(queue, node.Left) } if node.Right != nil { queue = append(queue, node.Right) } } } return values } t.Log(bfs(root, 0))}复制代码
划线
评论
复制
发布于: 刚刚阅读数: 6
方勇(gopher)
关注
Dead or Alive. 生存战斗是知识的源泉! 2018.11.08 加入
我是一名SRE哨兵,目前是好大夫基础架构部高级工程师。专注于 SRE,微服务、中间件的稳定性和可用性建设,整体负责好大夫服务治理云平台的设计和搭建!










评论