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 }