0
点赞
收藏
分享

微信扫一扫

把二叉树打印成多行[剑指offer]

程序猿不脱发2 2022-02-19 阅读 55

题目



[中等、队列]

题解

解题思路:

  • 树的层次遍历+使用两个变量(a.记录当前行的节点数目 b.记录下一行的节点数目)
  • 每一行的节点都要放到一个数组内部
function Print(pRoot)
{
    let res = []; //最终结果
    let queue = [];// 层次遍历queue
    let temprow = [];// 存放每一层的结点
    if(!pRoot) return res;
    queue.push(pRoot);
    let nextLevel = 0;//下一层结点数
    let nowLevel = 1;// 本层结点数
    
    while(queue.length){
         const node = queue.shift();
        temprow.push(node.val);
        nowLevel--;
        if(node.left) {
            nextLevel++;
            queue.push(node.left);
        }
        if(node.right) {
            nextLevel++;
            queue.push(node.right);
        }
        if(nowLevel === 0){
            res.push(temprow);
            temprow = [];
            nowLevel = nextLevel;
            nextLevel = 0;
        }
         
    }
    return res;
}

文章链接: 把二叉树打印成多行[剑指offer]
★转载请注明来自 QW’s Blog!★

举报

相关推荐

0 条评论