| 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))// }
 |