package main
import . "nc_tools"
/*
 * type TreeNode struct {
 *   Val int
 *   Left *TreeNode
 *   Right *TreeNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 
 * @param pRoot TreeNode类 
 * @return int整型二维数组
*/
func Print( pRoot *TreeNode ) [][]int {
    result:=[][]int{}
    if pRoot==nil{return result}
    q:=[]*TreeNode{pRoot}
    isRight:=false
    for len(q)!=0{
        size:=len(q)
        tmp:=[]int{}
        for i:=0;i<size;i++{
            tmp=append(tmp, q[i].Val)
            if isRight{
                if q[i].Right!=nil{
                    q=append(q, q[i].Right)
                }
                if q[i].Left!=nil{
                    q=append(q, q[i].Left)
                }
            }else{
                if q[i].Left!=nil{
                    q=append(q, q[i].Left)
                }
                if q[i].Right!=nil{
                    q=append(q, q[i].Right)
                }
            }
        }
        isRight=!isRight
        result=append(result, tmp)
        q=q[size:]
        reversal(q)
    }
    return result
}

func reversal(arr []*TreeNode){
    for i:=0;i<len(arr)/2;i++{
        arr[i],arr[len(arr)-1-i]=arr[len(arr)-1-i],arr[i]
    }
}