二叉樹的建立與遍歷

2021-05-02 01:12:10 字數 1411 閱讀 7047

/**

**由前序,和中序建立二叉樹,

**由已知的二叉樹,得到他的後序

**/#include

#define telemtype char

#define maxsize 10

typedef enumpointerthr;

typedef struct bitthrnodebithrnode;

typedef struct stackstack;

void inputtree(char *p,char *m); /*輸入二叉樹*/

void correspinding(char*,char*,unsigned*); /*求得對應位置*/

void inputlater(bithrnode*);

main()

printf("/n/n");

/**由前序,和中序建立二叉樹**/

printf("/n建立二叉樹(過程):/n");

for(i=1;*(pre+i);i++)

node = (bithrnode*)malloc(sizeof(bithrnode));

memset(node, 0x00,sizeof(bithrnode));

node->data = pre[i];

temp = node;

if(ptom[i]lchild = node;

printf("%c ",p->lchild->data);

for(j=i+1;j<=maxsize;j++)

}}else

p = temp;

}printf("/n---------------------/n");

inputlater(top);

getch();

return 0;

}/***由已知的二叉樹,得到他的後序***/

void inputlater(bithrnode *head)

if(p->data->rchild && !p->data->lchild)

if(!p->data->rchild && p->data->lchild)

if((!p->data->lchild) && (!p->data->rchild))

}while(1);

printf("/n由已知的二叉樹,得到他的後序:/n/n");

dowhile(p);       

}void correspinding(char *p,char *m,unsigned *c)}}

void inputtree(char *p,char *m)

p[i] = '/0';

printf("請輸入中序序列:");

for(i=0;(c=getchar())!='/n';i++)

m[i] = '/0';

}

二叉樹的建立與遍歷 二叉樹遍歷模板)

初學二叉樹,感覺之前鍊錶掌握不熟練導致接受有點難,現在做一些總結。本題其實就是根據給出的前序遍歷 包括空子樹 寫出相應的前序 中序和後序遍歷。廢話不多說,先看看題目 description 下面給出了教材中演算法6.4所示的演算法。status createbitree bitree t retur...

二叉樹建立與遍歷

二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱為 左子樹 和 右子樹 二叉樹的每個節點最多只能右兩棵子樹,子樹有左右之分,次序不能顛倒。除了葉結點外每乙個結點都有左右子葉且葉子結點都處在最底層的二叉樹。假設二叉樹的高度為k,除第k層外,其他各層的節點數都達到最大個數。也就是第一層到第k 1層為...

二叉樹建立與遍歷

節點定義 class binnode binnode char data2 data data2 binnode char data2,binnode parent2 data data2 void insertasleft char data void insertasright char dat...