qldlwl 发表于 2014-3-20 13:17:33

树状代码相关

如题:请问一下,树状的东西怎么可以实现,有没有朋友知道的

cqxcool 发表于 2014-3-20 20:24:53

二叉搜索树 这种?

qldlwl 发表于 2014-3-20 20:28:12

cqxcool 发表于 2014-3-20 20:24 static/image/common/back.gif
二叉搜索树 这种?

几叉是不懂的了,就是想搞一定家谱代码出来,然后可以上传到空间,通过域名仿问与注册的

Worldmaker 发表于 2014-3-22 19:29:00

实现树结构可以定义一个结构体,比如对于一个二叉树,一种实现方法是:里面包含树节点的值和指向其孩子节点的两个指针:left和right。不过不一定要用代码中的数据结构体现出来,树也是一种解题思想,可以将问题简化为一个树的“形状”。仅供参考哈~:lol:

rockerz 发表于 2014-4-13 20:19:48

家谱这玩意。。我建议用邻接表(adjacency list)来做
http://baike.baidu.com/view/549594.htm

K.黑桃 发表于 2014-4-17 12:22:14

简单的二叉树,刚学,只有建立 和遍历,谅解,,
#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]
查看完整版本: 树状代码相关