时间复杂度:O(n)
解题思路
利用层序遍历,每次只保存每一层的最后一个结点。
AC代码
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func rightSideView(root *TreeNode) []int {
res:=[]int{}
if root==nil{
return res
}
queue:=[]*TreeNode{root}
for len(queue)>0{
cnt:=len(queue)
for i:=0;i<cnt;i++{
if queue[i].Left!=nil{
queue=append(queue,queue[i].Left)
}
if queue[i].Right!=nil{
queue=append(queue,queue[i].Right)
}
}
res=append(res,queue[cnt-1].Val)
queue=queue[cnt:]
}
return res
}
感悟
印象很深刻的一道题,第一次面试时蔚来面试官就出了这道题,不过是左视图,当时没实现出来,太可惜了。