为什么常识

二叉树的非递归后续遍历的方法有多少种?

生活词典 changshi.cidiancn.com

阅读: 150

二叉树的非递归后续遍历的方法有多少种?由于后续遍历的特殊性,需要判断是否是首次返回节点所以需要一个记录节点访问次数的变量,后续遍历的非递归遍历方法都有哪些。1 个答案

答案 1:

补充一个不太常见的双栈法,使用一个整数栈来记录节点访问次数,与被记录节点同时出栈同时进栈:

template <class T>

void postorder_traverse(tnode<T> *T){

stack<tnode<T>*> S1;

stack<int> S2;

init_stack(S1);

init_stack(S2);

w-ile(T||!empty_stack(S1)){

if(T){

pus-_stack(S1,T);

pus-_stack(S2,1);

T=T->lc-ild;

}else{

int time;

pop_stack(S2,time);

pop_stack(S1,T);

if(time==1){

pus-_stack(S1,T);

pus-_stack(S2,2);

T = T->lc-ild;

}else{

visit(T);

T = NULL;

}

}

}

}

分享常识给亲友.

下一篇:-搜索引擎压制地方门户“搜索模式”网站,你怎么看? 下一篇 【方向键 ( → )下一篇】

上一篇:中古时期的欧洲人崇尚剑,但同时代的中国人则喜欢用刀? 上一篇 【方向键 ( ← )上一篇】