数据结构二叉树中序遍历非递归算法

2024-11-15 18:05:42
推荐回答(1个)
回答1:

有哪位高手帮忙分析下以下程序:#include"iostream.h" #define maxnode 100 typedef char datatype; typedef struct bitnode{ datatype data;//存储数据信息的信息域 struct bitnode *lchild,*rchild;//左右孩子指针 }bitnode,*bitree;void createbitree(bitree *t){//创建一棵已生成左右子树的二叉树的算法char ch;cin>>ch;if(ch=='0')(*t)=NULL;else{(*t)=new bitnode; (*t)->data=ch; createbitree(&(*t)->lchild); createbitree(&(*t)->rchild);}}int inorderout(bitree bt) {//非递归中序遍历二叉树 bitree stack[maxnode],p;int top;if(bt==NULL) return 1;//空树 top=-1;//栈顶指针初始化p=bt;while(!(p==NULL&&top==-1)) { while(p!=NULL) { if(toplchild;//指针指向p的左孩子结点}if(top==-1) return 1;//栈空时结束else{p=stack[top];//从栈中弹出栈顶元素 cout<data;top--;p=p->rchild;//指针指向p的右孩子结点}}}void main() //主函数{bitree bt;int n;cout<<" ***************二叉树***************"<>n;switch(n){case 0:break; case 1:createbitree(&bt);break;case 2:cout<<"中序遍历输出二叉树为:";