题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0
package main
import . "nc_tools"
/*
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param pRoot TreeNode类
* @return int整型二维数组
*/
func Print(pRoot *TreeNode) [][]int {
// write code here
if pRoot == nil{
return nil
}
res := [][]int{}
stack := []*TreeNode{pRoot}
for i := 0; len(stack) > 0; i++ {
res = append(res, []int{})
nextLayer := []*TreeNode{}
n := len(stack)
for j := 0; j < n; j++ {
node := stack[j]
if i%2 == 0 {
res[i] = append(res[i], node.Val)
} else {
res[i] = append(res[i], stack[n-1-j].Val)
}
if node.Left != nil {
nextLayer = append(nextLayer, node.Left)
}
if node.Right != nil {
nextLayer = append(nextLayer, node.Right)
}
}
stack = nextLayer
}
return res
}

