题目链接: 剑指Offer 32 - II. 从上到下打印二叉树 II
题目描述:
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
解法思路:
本题与上题的唯一区别就是在输出的时候,要将同一层的数输出在一行,这就意味着你需要知道哪些数是在一行的;
这里巧妙的利用求队列的长度,并依次输出每一行,
代码:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func levelOrder(root *TreeNode) [][]int {
var res [][]int
if root == nil {
return nil
}
var q []*TreeNode
q = append(q,root)
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)
}
}
tmp := make([]int,len(path))
copy(tmp,path)
res = append(res,tmp)
}
return res
}
标签:TreeNode,Offer,int,打印,II,二叉树,从上到下
From: https://www.cnblogs.com/lxing-go/p/17660862.html