进行二叉树的先序创建和先序遍历~
#define NULL 0
#include<stdio.h>
typedef struct
{
char c;
struct tree *lchild,*rchild;
}tree;
tree *t1,tn;
void creat(tree *t1)
{
char ch;
struct node *th;
ch=getchar();
if(ch=='.') t1=NULL;
else
{ printf("%c",t1->c);
th=(tree *)malloc(sizeof(tree));
th->c=ch;
creat(th->lchild);
creat(th->rchild);
}
}
void reaserch()
{
tree *p,s[100];
int top=0;
p=t1;
while(p!=NULL||top!=0)
{
printf("gffd");
while(p!=NULL)
{
printf("%c",p->c);
s[top++]=*p;
p=p->lchild;
}
*p=s[--top];
p=p->rchild;
}
}
int main()
{
creat(t1);
reaserch();
getch();
return 0;
}
输入ab..c..
为什么没有任何反应!!!!!
二叉树先序非递归遍历C语言算法
printf("先序非递归建立一个二叉树:"); if((ht=createprebitree())!=NULL) \/\/非递归建立 \/\/CreateBiTree(&ht); \/\/if(ht!=NULL) \/\/递归建立 { printf("先序遍历输出二叉树:"); preordertraverse(ht); putchar('\\n'); printf("中序遍历输出二叉树:"); inordertraverse(ht); putchar('\\n')...
c语言 关于二叉树的创建和遍历(中序遍历)
InitBtree(BT);\/\/初始化二叉树 CreateBiTree(BT,string);\/\/创建二叉树 printf("\\n中序遍历二叉树顺序为: ");inorder(BT);\/\/中序遍历二叉树 printf("\\n");}
...完成二叉树的建立,先序中序后序遍历的操作,求所有叶子结点总数_百度...
void print1(TLNode Tree){ \/\/先序遍历 if(Tree!=NULL){ printf("%d-",Tree->data);print1(Tree->lchild);print1(Tree->rchild);} } void print2(TLNode Tree){ \/\/中序遍历 if(Tree!=NULL){ print2(Tree->lchild);printf("%d-",Tree->data);print2(Tree->rchild);} } void...
请问C语言如何创建二叉树???
Tree tree;tree.root = NULL;\/\/创建一个空树 int n;scanf("%d",&n);for (int i = 0; i < n; i++)\/\/输入n个数并创建这个树 { int temp;scanf("%d",&temp);insert(&tree, temp);} inorder(tree.root);\/\/中序遍历 getchar();getchar();return 0;} ...
用C语言建立一棵二叉树,使用二杈链表存储,对其进行后续遍历,输出后序...
printf("%c",b->data);if(b->lchild!=NULL||b->rchild!=NULL){ printf("(");DispBTNode(b->lchild);if(b->rchild!=NULL)printf(",");DispBTNode(b->rchild);printf(")");} } } BTNode *FindNode(BTNode *b,char x){ BTNode *p=NULL;if(b==NULL){ return NULL;} else if...
二叉树中序遍历的序列是什么?
前序遍历的结点序列是:BEFCGDH;中序遍历的结点序列是:FEBGCHD;后序遍历的结点序列是:FEGHDCB。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树;序遍历首先遍历左子树,然后访问根结点,最后遍历右子树;后序遍历先左后右再根,即首先遍历左子树,然后遍历右子树,最后访问根结点。
...并对得到的二叉排序述进行中序遍历,得到有序序列。
void inorder(BiTNode *BT){\/\/中序遍历二叉树 if(BT!=NULL){ inorder(BT->lchild );printf("%c ",BT->data);inorder(BT->rchild );} } void DeleteBtree(BiTNode *BT){\/\/删除二叉树的所有的节点 if(BT!=NULL){ DeleteBtree(BT->lchild );DeleteBtree(BT->rchild );free(BT);} }...
c语言二叉树问题,勿写代码,求详细思考过程
中序遍历:若树不空,则先访问左子树,再访问根,再访问右子树。从后序遍历:CDABE得出E是最顶根节点。然后中序遍历:CADEB得出CAD是E的左子树中的,B是E的右子树中的。再分析后序遍历CDA可以知道A是CD的根,而中序是CAD得到C是A的左子树,D是A的右子树。(如下图)最后,先序遍历:若树...
求二叉树的前序遍历和后序遍历的算法(非递归)
\/\/先序遍历非递归算法 void PreOrderUnrec(Bitree *t){ Stack s; StackInit(s); \/\/初始化 Bitree *p=t; \/\/ 二叉树根节点 while (p!=NULL || !StackEmpty(s)) { while (p!=NULL) \/\/遍历左子树 { visite(p->data); push(s,p); p=p-...
用C语言实现二叉排序树排序,并按递减顺序打印各个数据
return bt; \/\/返回建立的二叉排序树的根指针 } void DispInDescrease(BSTNode *bt){ \/\/按从小到大输出查找树中的内容,对该树中序遍历即可 if(bt){ DispInDescrease(bt->lchild);printf("%d\\t",bt->key);DispInDescrease(bt->rchild);} } void main(){ BSTNode *bt,*p,*f;int...