题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
http://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0
思路:当前是往左塞还是往右塞
特别注意,循环终止条件应该是||而不是&& 最开始只有left是满的 如果是&&就会直接跳出!!! 写||的时候满足一个都可以,都是0的时候才跳出
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
function Print(pRoot){
// write code here
if(pRoot==null)return []
var ans=new Array();
var left_list=new Array();
var right_list=new Array();
var from_left=true;
left_list.push(pRoot);
console.log(left_list.length);
while(left_list.length!=0||right_list.length!=0){
var tmp=new Array();
if(from_left){//要遍历的是left,right应该为空
for(let i=0;i<left_list.length;i++){
if(left_list[i].left)right_list.push(left_list[i].left);
if(left_list[i].right)right_list.push(left_list[i].right);
tmp.push(left_list[i].val);
}
left_list=[];
}else{
// 要遍历right 而left为空 那么按顺序加入 然后再重新来一次
for(let i=0;i<right_list.length;i++){
if(right_list[i].left)left_list.push(right_list[i].left);
if(right_list[i].right)left_list.push(right_list[i].right);
tmp.push(right_list[right_list.length-i-1].val);
}
right_list=[]
}
console.log('xunhuan ')
console.log(tmp);
ans.push(tmp);
from_left=!from_left;
}
return ans;
}
module.exports = {
Print : Print
};