199. 二叉树的右视图
二叉树的右视图
题目描述:
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例 1:
输入: [1,2,3,null,5,null,4]
输出: [1,3,4]
示例 2:
输入: [1,null,3]
输出: [1,3]
示例 3:
输入: []
输出: []
提示:
二叉树的节点个数的范围是 [0,100]
-100 <= Node.val <= 100
思路:
时间复杂度:O(n),空间复杂度O(n)
用bfs来做,每一层取出最右边的那个节点的值。
代码:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func rightSideView(root *TreeNode) []int {
if root == nil{
return []int{}
}
var res []int
var queue,queue2 []*TreeNode
queue = append(queue, root)
var bfs func()
bfs = func(){
node := queue[0]
queue = queue[1:]
if node.Left != nil{
queue2 = append(queue2, node.Left)
}
if node.Right != nil{
queue2 = append(queue2, node.Right)
}
}
for len(queue)!=0 || len(queue2)!= 0{
res = append(res, queue[len(queue)-1].Val)
for len(queue) != 0{
bfs()
}
queue = queue2
queue2 = []*TreeNode{}
}
return res
}
代码效率:
执行用时:0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗:2.1 MB, 在所有 Go 提交中击败了90.94%的用户
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!