【js刷题--树】JZ78 把二叉树打印成多行

描述
给定一个节点数为 n 二叉树,要求从上到下按层打印二叉树的 val 值,同一层结点从左至右输出,每一层输出一行,将输出的结果存放到一个二维数组中返回。
基本思路
要有三个数组:
arr:存每一层的节点,并拿出来遍历,每拿出一个,把它的值放入temp中,然后再把它的左右孩子放入,直到本层遍历完毕
temp:二维结果数组的一维数组,每拿到一层,放入result中
result:存放最终所的结果数组

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function Print(pRoot)
{
    // write code here
    if(!pRoot) return []
    let arr = [pRoot]  //暂存数据
    let result = []  //存结果
    while(arr.length){
        //此处要限制某一层的长度,打印一次
        let len = arr.length
         //暂存数值,给到结果数组后就清空
        let temp = []
        //打印某一层时,只需要按照记录的长度进行打印即可
        for(let i=0; i<len; i++){
            let node = arr.shift()
            temp.push(node.val)
            //出来一个节点,则遍历它的左右子节点
            if(node.left) arr.push(node.left)
            if(node.right) arr.push(node.right)
        }
        result.push(temp)
    }
    return result
}
module.exports = {
    Print : Print
};

版权声明:本文为weixin_49487698原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。