题目链接: 剑指Offer 32 - III. 从上到下打印二叉树
题目描述:
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
解法思路:
本题在一题的基础上,区分打印方向,加一个bool型的方向变量即可;
代码:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func levelOrder(root *TreeNode) [][]int {
if root == nil {
return nil
}
var res [][]int
var q []*TreeNode
q = append(q,root)
d := true //表示输出方向,true是从左向右
for len(q) > 0{
n := len(q)
var path []int
for i:=0;i<n;i++{
node := q[0]
q = q[1:]
path = append(path,node.Val)
if node.Left != nil {
q = append(q,node.Left)
}
if node.Right != nil{
q = append(q,node.Right)
}
}
if d == false{
for i,j := 0,len(path)-1;i < j; i,j = i+1,j-1 {
path[i],path[j] = path[j],path[i]
}
d = true
}else{
d= false
}
tmp := make([]int,len(path))
copy(tmp,path)
res = append(res,tmp)
}
return res
}
标签:TreeNode,Offer,int,32,打印,二叉树,var
From: https://www.cnblogs.com/lxing-go/p/17660896.html