题解 | #按之字形顺序打印二叉树#

按之字形顺序打印二叉树

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
}

全部评论

相关推荐

昨天 14:27
门头沟学院 Java
点赞 评论 收藏
分享
7月12日投的,咋一点反馈都没有
投递禾赛科技等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务