//非遞歸後序遍歷
void Porder2(BTNode * root)
{
BTNode **s;
BTNode *sr;//右子樹結點訪問標記
BTNode *p;
int top = -1;
int tag = 0;
s = (BTNode **)malloc(100 * sizeof(BTNode *));
p = root;
do{
while(p && !tag){//有左未訪左 訪左
s[++top] = p;
p = p->left;
}
p = s[top];
tag = 0;
//到這,則無左或訪過左
if(!p->right || p->right == sr/*sr[topr]*/) //無右或訪過右
{
printf("%d ",p->data);
top--;
tag = 1;
sr = p;
}
else //有右未訪過右
{
p=p->right;
}
} while(top != -1);
}
二叉搜索樹非遞歸後序遍歷的嘗試
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.