树---把二叉树打印成多行

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

分析:首先先把根节点放入要打印的队列中,在打印之前把其子节点保存在队列中,

这里需要有一个list存放当前层的节点,有个计数器记还有多少节点要打印,下一层由多少节点。

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function Print(pRoot)
{
    // write code here
    const queue=[],res=[]
    if(pRoot===null){
        return res
    }
    queue.push(pRoot)
    let nextLevel=0//下一层节点的个数
    let toBePrinted=1//这一层还有多少节点要打印
    let list=[]//存放每一层的节点
    while(queue.length){
        const pNode=queue.shift()
        list.push(pNode.val)
        if(pNode.left!==null){
            queue.push(pNode.left)
            nextLevel++
        }
        if(pNode.right!==null){
            queue.push(pNode.right)
            nextLevel++
        }
        toBePrinted--
        if(toBePrinted==0){
            res.push(list)
            list=[]
            toBePrinted=nextLevel
            nextLevel=0
        }
    }
    return res
}

 

posted @ 2020-04-04 16:49  mle123  阅读(188)  评论(0编辑  收藏  举报