📑 题目:199. 二叉树的右视图

🚀 本题 LeetCode 传送门

题目大意

从右边看一个树,输出看到的数字。注意有遮挡。

解题思路

  • 这一题是按层序遍历的变种题。按照层序把每层的元素都遍历出来,然后依次取每一层的最右边的元素即可。用一个队列即可实现。
  • 第 102 题和第 107 题都是按层序遍历的。

代码

  1. package leetcode
  2. /**
  3. * Definition for a binary tree node.
  4. * type TreeNode struct {
  5. * Val int
  6. * Left *TreeNode
  7. * Right *TreeNode
  8. * }
  9. */
  10. func rightSideView(root *TreeNode) []int {
  11. res := []int{}
  12. if root == nil {
  13. return res
  14. }
  15. queue := []*TreeNode{root}
  16. for len(queue) > 0 {
  17. n := len(queue)
  18. for i := 0; i < n; i++ {
  19. if queue[i].Left != nil {
  20. queue = append(queue, queue[i].Left)
  21. }
  22. if queue[i].Right != nil {
  23. queue = append(queue, queue[i].Right)
  24. }
  25. }
  26. res = append(res, queue[n-1].Val)
  27. queue = queue[n:]
  28. }
  29. return res
  30. }