可能編譯時會有些語法小錯誤(比如分號,->,等),很容易就自己糾正了哦,思路絕對是完全正確的,所以用的話就自己試著改改吧,直接復制粘貼,就正確,豈不是太沒寫代碼體驗了,自己改改才印象更加深刻的呢(▽)~~~~;
//非遞回遍歷二×樹
#include<iostream>
using namespace std;
//二叉鏈存盤
typedef struct BiNode{
char data;
struct BiNode *lchild,*rchild;
}BiTNode,*BiTree;
//鏈堆疊
typedef struct StackNode{
BiTNode data;
struct StackNode *next;
}StackNode,*LinkStack;
void CreatBiTree(BiTree &T){
char ch;
cin>>ch;
if(ch=='#') T==NULL;
else{
T=new BiTNode;
T->data=https://www.cnblogs.com/ygjzs/p/ch;
CreatBiTree(T->lchild);
CreatBiTree(T->rchild);
}
}
void InitStack(LinkStack &S)
{
//構造一個空堆疊S,堆疊頂指標置空
S=NULL;
}
void StackEmpty(LinkStack S){
if(!S){
return true;
}else{
return false;
}
}
void Push(LinkStack &S,BiTree e){
StackNode *p=new StackNode;
p->data=*e;
p->next=S;
S=p;
}
void pop(LinkStack &S BiTree e){
if(S!=NULL){
*e=S->data;
StackNode *p=S;
S=S->next;
delete p;
}
}
//中序
void InOderTraversel1(BiTree T){
LinkStack S;BiTree p;
BiTree q=new BiTNode;
InitStack(S); p=T;
while(p||!StackEmpty(S)){
if(p){
push(S,p);
p->lchild;
}else{
pop(S,p);
cout<data;
p=q->rchild;
}
}
}
void main(){
BiTree tree;
cout<<"please input\n";
CreatBiTree(tree);
cout<<"result:\n";
InOderTraversel1(tree);
cout<<endl;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/125574.html
標籤:其他
上一篇:淺談資料結構概念
下一篇:復制樹
