| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | 
							- package main
 
- // MyNode ...
 
- type MyNode struct {
 
- 	Node  *TreeNode
 
- 	Level int
 
- }
 
- /**
 
-  * Definition for a binary tree node.
 
-  * type TreeNode struct {
 
-  *     Val int
 
-  *     Left *TreeNode
 
-  *     Right *TreeNode
 
-  * }
 
-  */
 
- func levelOrder(root *TreeNode) [][]int {
 
- 	result := [][]int{}
 
- 	stack := []MyNode{}
 
- 	curr := root
 
- 	top := -1
 
- 	level := 0
 
- 	for curr != nil || top > -1 { // Inorder traversal
 
- 		for curr != nil {
 
- 			stack = append(stack, MyNode{curr, level})
 
- 			top++
 
- 			curr = curr.Left
 
- 			level++
 
- 		}
 
- 		if top > -1 {
 
- 			curr = stack[top].Node
 
- 			level = stack[top].Level
 
- 			stack = stack[:top]
 
- 			top--
 
- 			for len(result) <= level {
 
- 				result = append(result, []int{})
 
- 			}
 
- 			result[level] = append(result[level], curr.Val)
 
- 			curr = curr.Right
 
- 			level++
 
- 		}
 
- 	}
 
- 	return result
 
- }
 
- // func main() {
 
- // 	//        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(levelOrder(&n1))
 
- // }
 
 
  |