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

风流意气都作罢 提交于 2020-04-06 03:50:05

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

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

这里需要有一个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
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!