python畫二叉樹turtle 某二叉樹的中序遍歷為CBADE,后序遍歷序列為CBEDA,則前序遍歷序列為?
某二叉樹的中序遍歷為CBADE,后序遍歷序列為CBEDA,則前序遍歷序列為?中序遍歷:訪問根節(jié)點在左右子樹之間,即左—根—右。后序遍歷:訪問根結(jié)點在左右子樹之后,即左—右—根。 由定義可以知道: 1、
某二叉樹的中序遍歷為CBADE,后序遍歷序列為CBEDA,則前序遍歷序列為?
中序遍歷:訪問根節(jié)點在左右子樹之間,即左—根—右。后序遍歷:訪問根結(jié)點在左右子樹之后,即左—右—根。 由定義可以知道: 1、后序遍歷中最后一個就是樹根結(jié)點,即A結(jié)點。 2、在中序遍歷中,根結(jié)點左邊的是左兒子集,右邊的是右兒子集。所以二叉樹應(yīng)該為A/ B D/ C E 所以前序遍歷為ABCDE
用C語言編程實現(xiàn)二叉樹的中序遍歷算法?
#include
#include
struct BiTNode *stack[100]
struct BiTNode//定義結(jié)構(gòu)體
{
char data
struct BiTNode *lchild,*rchild
}
void later(struct BiTNode *&p) //前序創(chuàng)建樹
{
char ch
scanf("%c",&ch)
if(ch==" ")
p=NULL
else
{
p=(struct BiTNode *)malloc(sizeof(struct BiTNode))
p->data=ch
later(p->lchild)
later(p->rchild)
}
}
void print(struct BiTNode *p) //前序遍歷(輸出二叉樹)
{
int i=-1
while(1)
{
while(p!=NULL)
{
stack[ i]=p->rchild/*printf("ok?n")*/
printf("%c",p->data)
p=p->lchild
}
if(i!=-1)
{
p=stack[i]
i--
}
else
return
}
}
void main()//主函數(shù)
{
struct BiTNode *p,*t
later(p)
print(p)
}