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 61
|
func levelOrder(root *TreeNode) [][]int { if root == nil { return nil }
res := make([][]int, 0) list := make([]*TreeNode, 0) list = append(list, root) listLen := len(list)
for len(list) > 0 { nextLevelLen := 0 path := make([]int, 0)
for listLen > 0 { node := list[0] listLen-- path = append(path, node.Val)
if len(list) == 0 { list = make([]*TreeNode, 0) } else { list = list[1:] }
if node.Left != nil { list = append(list, node.Left) nextLevelLen++ }
if node.Right != nil { list = append(list, node.Right) nextLevelLen++ } }
res = append(res, path) listLen = nextLevelLen }
return res }
|