| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | 
							- package main
 
- /**
 
-  * Definition for a binary tree node.
 
-  * type TreeNode struct {
 
-  *     Val int
 
-  *     Left *TreeNode
 
-  *     Right *TreeNode
 
-  * }
 
-  */
 
- func zigzagLevelOrder(root *TreeNode) [][]int {
 
- 	result := [][]int{}
 
- 	if root == nil {
 
- 		return result
 
- 	}
 
- 	zigzagLevelOrderHelper(root, 0, &result)
 
- 	return result
 
- }
 
- func zigzagLevelOrderHelper(root *TreeNode, level int, result *[][]int) {
 
- 	if root.Left != nil {
 
- 		zigzagLevelOrderHelper(root.Left, level+1, result)
 
- 	}
 
- 	for len(*result) <= level {
 
- 		*result = append(*result, []int{})
 
- 	}
 
- 	if level%2 == 0 {
 
- 		(*result)[level] = append((*result)[level], root.Val)
 
- 	} else {
 
- 		(*result)[level] = append([]int{root.Val}, (*result)[level]...)
 
- 	}
 
- 	if root.Right != nil {
 
- 		zigzagLevelOrderHelper(root.Right, level+1, result)
 
- 	}
 
- }
 
- // func main() {
 
- // 	//        1
 
- // 	//       / \
 
- // 	//      2   3
 
- // 	//     / \
 
- // 	//    4   5
 
- // 	n5 := TreeNode{5, nil, nil}
 
- // 	n4 := TreeNode{4, nil, nil}
 
- // 	n3 := TreeNode{3, nil, nil}
 
- // 	n2 := TreeNode{2, &n4, &n5}
 
- // 	n1 := TreeNode{1, &n2, &n3}
 
- // 	fmt.Println(zigzagLevelOrder(&n1))
 
- // }
 
 
  |