-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy path107. Binary Tree Level Order Traversal II.go
60 lines (60 loc) · 1.25 KB
/
107. Binary Tree Level Order Traversal II.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package main
import "fmt"
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func levelOrderBottom(root *TreeNode) [][]int {
if root == nil{
return [][]int{}
}
list := []*TreeNode{root}
mark := root
markNow := root
level := []int{}
ret := [][]int{}
tmp := root
for len(list)>0{
if list[0] == nil{
list = list[1:]
continue
}
tmp = list[0]
list = list[1:]
level = append(level,tmp.Val)
if tmp.Left != nil{
markNow = tmp.Left
list = append(list,tmp.Left)
}
if tmp.Right != nil{
markNow = tmp.Right
list = append(list,tmp.Right)
}
if mark == tmp{
mark = markNow
cpy := make([]int,len(level))
copy(cpy,level)
ret = append(ret,cpy)
level = []int{}
}
}
for i,j:= 0,len(ret)-1;i<j;{
ret[i],ret[j] = ret[j],ret[i]
i++
j--
}
return ret
}
func main(){
buildTree([]int{1,2},[]int{1,2})
fmt.Print("Hello")
}