1、试题地址:https://leetcode-cn.com/problems/binary-tree-right-side-view/solution/
2、试题思路:
右视图即是层次遍历时每层的最后一个节点,可以利用二维数组实现:
[[node(1)],
[node(2),node(3)],
[node(5),node(4)]]
最后记录二维数组每一层最后一个元素即可。
3、试题代码:

func rightSideView(root *TreeNode) []int { treeMap := [][]TreeNode{} temp := []TreeNode{} temp = append(temp, (*root)) treeMap = append(treeMap, temp) i := 0 for { temp = []TreeNode{} for _, v := range treeMap[i] { if v.Left != nil { temp = append(temp, (*v.Left)) } if v.Right != nil { temp = append(temp, (*v.Right)) } } if len(temp) != 0 {//遍历完成 treeMap = append(treeMap, temp) i++ continue } break } result := []int{} for _, v := range treeMap { result = append(result, v[len(v)-1].Val)//记录最右边元素的值 } return result }