| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 693 人关注过本帖
标题:数据结构那些小事 求教大虾~~ 关于二叉树的!
取消只看楼主 加入收藏
浪群
Rank: 1
等 级:新手上路
帖 子:29
专家分:6
注 册:2011-8-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
数据结构那些小事 求教大虾~~ 关于二叉树的!
根据已知的二叉树先序序列和中序序列 还原二叉树!  想知道递归的方法 ···   
搜索更多相关主题的帖子: 二叉树 
2011-10-25 21:53
浪群
Rank: 1
等 级:新手上路
帖 子:29
专家分:6
注 册:2011-8-29
收藏
得分:0 
      给力啊!!!    O(∩_∩)O哈哈~   虽然介个程序写得有点复杂··不过基本思路  已经理解了··  ·
程序代码:
#define EL 10
#define TEL 2*EL+1
#define LEN sizeof(struct node)
#include<stdio.h>
#include<stdlib.h>
char pre[TEL]="abdhiecfg";
char pin[TEL]="hdibeafcg";
typedef struct node{
    char data;
    struct node * lch,*rch;
}BTNode,*BTree;
BTNode root;
BTree rt=&root;
int pos(char c,char s[],int st){
    char *p;
    p=s+st;
    while(*p!=c && *p!='\0') 
        p++;
    return p-s;
}
void create(BTree *t,int i1,int i2,int len){
    int r,llen,rlen;
    if(len<=0) 
        *t=NULL;
    else{
        *t=(BTree)malloc(LEN);
        (*t)->data=pre[i1];
        r=pos(pre[i1],pin,i2);
        llen=r-i2;
        rlen=len-(llen+1);
        create(&(*t)->lch,i1+1,i2,llen);
        create(&(*t)->rch,i1+llen+1,r+1,rlen);
    }
}

void travel(BTree t){
    if(t){
        travel(t->lch);
        travel(t->rch);
        putchar(t->data);
    }
}

void main(){
    create(&rt,0,0,EL);
    if(rt) 
        travel(rt);
    printf("\n");
}
2011-10-26 18:10
浪群
Rank: 1
等 级:新手上路
帖 子:29
专家分:6
注 册:2011-8-29
收藏
得分:0 
回复 6楼 浪群
基本思路跟你的一样··  只是写得有点不同  (*^__^*) 嘻嘻……
2011-10-26 18:12
浪群
Rank: 1
等 级:新手上路
帖 子:29
专家分:6
注 册:2011-8-29
收藏
得分:0 
真是见多识广 啊!!  O(∩_∩)O哈哈~    这是我实验报告选题啦···  搞了好久··
2011-10-26 19:59
快速回复:数据结构那些小事 求教大虾~~ 关于二叉树的!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030923 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved