123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package main
- /**
- * Definition for a binary tree node.
- * type TreeNode struct {
- * Val int
- * Left *TreeNode
- * Right *TreeNode
- * }
- */
- func rightSideView(root *TreeNode) []int {
- view := make([]int, 0)
- if root == nil {
- return view
- }
- type Node struct {
- Ptr *TreeNode
- Level int
- }
- viewed := make(map[int]bool)
- queue := make([]Node, 0)
- curr := root
- queue = append(queue, Node{curr, 0})
- for len(queue) != 0 {
- curr = queue[0].Ptr
- level := queue[0].Level
- queue = queue[1:] // Pop
- if !viewed[level] {
- view = append(view, curr.Val)
- viewed[level] = true
- }
- if curr.Right != nil {
- queue = append(queue, Node{curr.Right, level + 1})
- }
- if curr.Left != nil {
- queue = append(queue, Node{curr.Left, level + 1})
- }
- }
- return view
- }
- // func main() {
- // fmt.Println(rightSideView(nil))
- // // 1
- // // /
- // // 2
- // // / \
- // // 3 4
- // n4 := TreeNode{4, nil, nil}
- // n3 := TreeNode{3, nil, nil}
- // n2 := TreeNode{2, &n3, &n4}
- // n1 := TreeNode{1, &n2, nil}
- // fmt.Println(rightSideView(&n1))
- // }
|