| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1514 人关注过本帖
标题:计算以孩子-兄弟链表示的树的高度
取消只看楼主 加入收藏
xiaoxxr
Rank: 1
等 级:新手上路
帖 子:10
专家分:1
注 册:2010-10-4
结帖率:100%
收藏
 问题点数:0 回复次数:3 
计算以孩子-兄弟链表示的树的高度
利用递归的方法计算树高,但是运行结果总是2,是不是在创建的时候出了问题?
程序代码:
#include <stdio.h>
#include <stdlib.h>
typedef char telemtype;
typedef struct tnode{
    telemtype data;
    struct tnode *hp,*vp;}tnode,*bitree;
int visit(bitree p){
    int max=0;
    if(p!=NULL){
        printf("%c ",p->data);
        visit(p->hp);
        visit(p->vp);
    }
    return max;
}
void createbt(bitree &bt){
    char ch;
    scanf("%c",&ch);
    if(ch=='#')bt=NULL;
    else{
        bt=(bitree)malloc(sizeof(tnode));
        bt->data=ch;
        createbt(bt->hp);
        createbt(bt->vp);
    }
}
int height(bitree &bt){
    tnode *p;
    int m,max=0;
    if(bt==NULL)
        return 0;
    else if(bt->vp==NULL)
        return 1;
    else{
        p=bt->vp;
        while(p!=NULL){
            m=height(p);
            if(max<m) max=m;
            p=p->hp;
        }
        return m+1;
    }
}
void main(){
    bitree bt;
    printf("请输入树:");
    createbt(bt);
    printf("树为:\n");
    visit(bt);
    printf("\n树深为%d\n",visit(bt));
}
搜索更多相关主题的帖子: 兄弟 高度 孩子 
2010-12-09 22:52
xiaoxxr
Rank: 1
等 级:新手上路
帖 子:10
专家分:1
注 册:2010-10-4
收藏
得分:0 
为什么它的递归创建和二叉树的不同呢?我运行出来结果都是1啊。。。

[ 本帖最后由 xiaoxxr 于 2010-12-10 16:45 编辑 ]
2010-12-10 16:24
xiaoxxr
Rank: 1
等 级:新手上路
帖 子:10
专家分:1
注 册:2010-10-4
收藏
得分:0 
哦,貌似是我输入的时候错了,请教一下输入树时的顺序是什么啊?比如:A有三个孩子B、C、D,B又有一个孩子E,我输的是ABE##C#D###
2010-12-11 16:12
xiaoxxr
Rank: 1
等 级:新手上路
帖 子:10
专家分:1
注 册:2010-10-4
收藏
得分:0 
嗯嗯,受教了,谢谢!

[ 本帖最后由 xiaoxxr 于 2010-12-11 16:58 编辑 ]
2010-12-11 16:55
快速回复:计算以孩子-兄弟链表示的树的高度
数据加载中...
 
   



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

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