题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0?tpId=13&tqId=23454&ru=/exam/oj/ta&qru=/ta/coding-interviews/question-ranking&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D13
利用队列思想 + 二叉树的层次遍历。
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 var result [][]int if pRoot == nil { return result } queue := []*TreeNode{pRoot} // 模拟队列 for len(queue) > 0 { var levelNodes []int size := len(queue) for i := 0 ; i <= size -1 ; i++ { node := queue[0] //取出队首位置的节点 queue = queue[1:] // 更新队列 if len(result)%2 == 0 { // 结果中如果是偶数,即将到来的下一层则是奇数层,顺序加入 levelNodes = append(levelNodes, node.Val)//奇数层顺序加入 }else { levelNodes = append([]int{node.Val}, levelNodes...)//偶数层逆序加入 } if node.Left != nil { queue = append(queue, node.Left) } if node.Right != nil { queue = append(queue, node.Right) } } result = append(result, levelNodes) } return result }