树状代码相关
如题:请问一下,树状的东西怎么可以实现,有没有朋友知道的 二叉搜索树 这种? cqxcool 发表于 2014-3-20 20:24 static/image/common/back.gif二叉搜索树 这种?
几叉是不懂的了,就是想搞一定家谱代码出来,然后可以上传到空间,通过域名仿问与注册的 实现树结构可以定义一个结构体,比如对于一个二叉树,一种实现方法是:里面包含树节点的值和指向其孩子节点的两个指针:left和right。不过不一定要用代码中的数据结构体现出来,树也是一种解题思想,可以将问题简化为一个树的“形状”。仅供参考哈~:lol: 家谱这玩意。。我建议用邻接表(adjacency list)来做
http://baike.baidu.com/view/549594.htm
简单的二叉树,刚学,只有建立 和遍历,谅解,,
#include<stdio.h>
#include<stdlib.h>
#define MAX 50
typedef struct node
{
char data;
struct node *lchild;
struct node *rchild;
}BTnode;
BTnode *Create(char *str);
void Show(BTnode *p);
void Pre(BTnode *p);
void Mid(BTnode *p);
void Pos(BTnode *p);
int main()
{
char *str =NULL;
BTnode *p=NULL;
int choice ;
str =(char *)malloc(MAX);///why ? what is means
printf("输入一个二叉树(括号嵌套法表示) \n");
gets(str);
p=Create(str);
printf( "----------\n");
printf("输出生成的二叉树 \n");
//Show(p);
printf("\n");
while(1)
{
printf("二叉树遍历练习\n");
printf("1.先序遍历\n");
printf("2.中序遍历\n");
printf("3.后序遍历\n");
printf("4.退出程序 \n");
printf("请选择功能\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
Pre(p);
printf("\n");
break;
case 2:
Mid(p);
printf("\n");
break;
case 3:
Pos(p);
printf("\n");
break;
case 4:
return 1;
break;
}
}
return 0;
}
// cerate ()
BTnode *Create(char *str)
{
BTnode *s,*p,*p1,*B=NULL;
int i=0,top= -1,flag;
char ch;
ch =str;
while(ch!='\0')
{
switch (ch)
{
case '(':
top++;
//s=p;
flag=1;
printf("--1---\n");
break;
case ')':
top--;
printf("--2---\n");
break;
case ',':
printf("--3---\n");
flag=2;
break;
default:
printf("--4---\n");
p=(BTnode*)malloc(sizeof(BTnode));
p->data=ch;
p->lchild=NULL;
p->rchild=NULL;
if(B==NULL)
{
B=p;
p1=B;
s=p1;
}
else
if(flag==1)
{ p1=s;
//printf("00000000000000\n");
s=p;
p1->lchild=p;
//p1=p;
}
//p1=p;
else
if(flag==2)
{
p1=s;
s=p;
//s->rchild=p;
p1->rchild=p;
//p1=p;
}
break;
}
i++;
ch=str;
}
return B;
}
/*shu chu
void Show(BTnode *p)
{
if(p!=NULL)
{
printf("%c",p->data);
if(p->rchild!=NULL||p->rchild!=NULL)
{
printf("(");
Show(p->lchild);
if(p->rchild!=NULL)
{
printf(",");
Show(p->rchild);
}
printf(")");
}
}
}
void Show2(BTnode *p)
{
}
//pre
void Pre(BTnode *p)
{
if(p!=NULL)
{
putchar(p->data);
Pre(p->lchild);
Pre(p->rchild);
}
}
//Mid
void Mid(BTnode *p)
{
i++
if(p!=NULL)
{
Mid(p->lchild);
putchar(p->data);
Mid(p->rchild);
}
}
*/
//pos
void Pos(BTnode *p)
{
if(p!=NULL)
{
Pos(p->lchild);
Pos(p->rchild);
putchar(p->data);
}
}
页:
[1]