LeetCode199-二叉树的右视图(Golang)
LeetCode199-二叉树的右视图
题意:
给定一个二叉树,要求它的右视图,即从右边看过去,该二叉树所显现出来的数字序列。
(具体可以看题面,比较清晰,不多赘述)
思路:
- 利用深度优先搜索DFS,先搜右子树,再搜左子树
- 如果当前深度未被搜索过,则可以将该节点加入结果数组当中,因为先搜右子树,所以先搜出来的一定是答案之一。
- 搜左子树的原因是为了找到左子树中可能存在的答案,比如当左子树高度高于右子树时,左子树就会对答案产生贡献。
代码(Golang):
func rightSideView(root *TreeNode) []int { ans:=make([]int,0) var dfs func(root*TreeNode,cnt int) dfs=func(root*TreeNode,cnt int){ if root==nil{//避免访问错误 return } if len(ans)<=cnt{//说明当前的层数未被遮挡 ans=append(ans,root.Val) } dfs(root.Right,cnt+1)//先搜右边,再搜左边 dfs(root.Left,cnt+1) } dfs(root,0) return ans}