描述
给定一个节点数为 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版权协议,转载请附上原文出处链接和本声明。