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

按之字形顺序打印二叉树

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(root *TreeNode) [][]int {
	// write code here
	//goLANG 利用数据灵活的实现队列
	result := make([][]int, 0)
	if root == nil {
		return result
	}

	queue := make([]*TreeNode, 0)
	queue = append(queue, root)
	for len(queue) > 0 {
		size := len(queue)
		list := make([]int, 0)
		for step := 0; step < size; step++ {
			element := queue[0] //模仿队列从head取元素
			queue = queue[1:]
			if len(result)%2 == 0 {
				list = append(list, element.Val)
			} else {
				list = append([]int{element.Val}, list...)
			}
			if element.Left != nil {
				queue = append(queue, element.Left)
			}
			if element.Right != nil {
				queue = append(queue, element.Right)
			}
		}
		result = append(result, list)
	}

	return result
}

全部评论
广度优先,用数组实现队列
点赞 回复 分享
发布于 2023-11-24 22:14 上海

相关推荐

喜欢疯狂星期四的猫头鹰在研究求职打法:短作业优先
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务