按之字形顺序打印二叉树
题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
- 用两个栈,一个存从左到右的节点,一个存从右到左的节点
- 奇数层从左到右打印,偶数层从右到左打印
- 每一层单列进list,list再单列进lists
function Print(pRoot)
{
// write code here
const lists=[]
if(pRoot==null){
return lists;
}
const stack1=[]
const stack2=[]
stack2.push(pRoot);
let i=1;
while(stack1.length!=0||stack2.length!=0){
const list=[]
if((i&1)==1){
while(stack2.length!=0){
const tmp=stack2[stack2.length-1];
stack2.pop()
list.push(tmp.val)
if(tmp.left!=null)stack1.push(tmp.left);
if(tmp.right!=null)stack1.push(tmp.right);
}
}
else{
while(stack1.length!=0){
const tmp=stack1[stack1.length-1];
stack1.pop();
list.push(tmp.val);
if(tmp.right!=null)stack2.push(tmp.right);
if(tmp.left!=null)stack2.push(tmp.left);
}
}
i++;
lists.push(list)
}
return lists;
}