描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)
数据范围:0 \le n \le 15000≤n≤1500,树上每个节点的val满足 |val| <= 1500∣val∣<=1500 要求:空间复杂度:O(n)O(n),时间复杂度:O(n)O(n) 例如: 给定的二叉树是{1,2,3,#,#,4,5}
该二叉树之字形层序遍历的结果是 [ [1], [3,2], [4,5] ] 思路:上一题做了程序遍历的取值,这题可以延申。根据要求,交替遍历咱还不会,但是取得之后的数据咱可以做反转处理,也达到了交替的取值效果。
function Print(pRoot)
{
const res = [];
function cd(root,index){
if(!root) return;
if(index >= res.length){
res.push([root.val])
} else {
res[index].push(root.val);
}
cd(root.right, index+1);
cd(root.left, index+1);
}
cd(pRoot, 0);
return res.map((item, i)=>{
i % 2 === 0 && item.reverse();
return item;
});
}
牛客刷题
|