写点什么

[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))}
复制代码


用户头像

Dead or Alive. 生存战斗是知识的源泉! 2018.11.08 加入

我是一名SRE哨兵,目前是好大夫基础架构部高级工程师。专注于 SRE,微服务、中间件的稳定性和可用性建设,整体负责好大夫服务治理云平台的设计和搭建!

评论

发布
暂无评论
[Day38]-[二叉树]-二叉树的右视图_LeetCode_方勇(gopher)_InfoQ写作社区