> 文档中心 > LeetCode199-二叉树的右视图(Golang)

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}

郁金香导航