封装好的二叉树各种操作的代码:#include“initList/initTree.h“
思路:用正常的层次遍历算法,唯一区别就是变为逆向输出,很容易联想到栈,可以将输出语句改为压栈语句,等层次遍历完之后再输出栈元素,即为结果。
思考:如果要求层次遍历自上而下,自右向左输出,该如何实现?
代码:
//层次遍历 下自上,右自左
void layerR_LVisit(BiTree T){
BiTree p = T;
stack<BiTree> s;
queue<BiTree> Q;
Q.push(p);
while(!Q.empty()){
p = Q.front();
Q.pop();
// non_recursion().visit(p->data);
s.push(p);
if(p->lchild!=NULL)
Q.push(p->rchild);
if(p->rchild!=NULL)
Q.push(p->lchild);
}
while(!s.empty()){
BiTree t = s.top();
s.pop();
non_recursion().visit(t->data);
}
}
结果: