| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 498 人关注过本帖
标题:二叉树的程序疑惑
只看楼主 加入收藏
zhanghang123
Rank: 2
等 级:论坛游民
帖 子:39
专家分:24
注 册:2010-3-20
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:2 
二叉树的程序疑惑
#include<iostream.h>
#include<stdlib.h>
typedef struct Node
{
    char ch;
    char data;
    struct Node *lchild;
    struct Node *rchild;
}BiTNode,*BiTree;

void CreateBitree(BiTree *root)
{
    char ch;
    cin>>ch;
    if(ch=='#')
        *root=NULL;
    else
    {
        *root=(BiTNode *)malloc(sizeof(BiTNode));
        (*root)->data=ch;
        CreateBitree(&((*root)->lchild));
        CreateBitree(&((*root)->rchild));
    }
}

int depth(BiTree root)
{
    int ldepth,rdepth;
    if(!root)
        return 0;
    else
    {
        ldepth=depth(root->lchild);
        rdepth=depth(root->rchild);
        if(ldepth>rdepth)
            return ldepth+1;
        else
            return rdepth+1;
    }
    return 1;
}

void countleaf(BiTree bt,int *c)
{
    if(bt)
    {
        if(bt->lchild==NULL&&bt->rchild==NULL)
        {
            *c=*c+1;
        }
        countleaf(bt->lchild,c);
        countleaf(bt->rchild,c);
    }
}

void main()
{
    BiTree bt;
    CreateBitree(&bt);
    cout<<"树的深度: "<<depth(bt)<<endl;
    int c=0;
    countleaf(bt,&c);
    cout<<"叶子结点个数: "<<c<<endl;
}
在上述程序中,为什么树的深度和叶子结点个数求不对?请高手指点一下!
搜索更多相关主题的帖子: 二叉树 
2010-11-09 09:38
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:5 
贴张 不对的图上来

在我上面运行的
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
2010-11-09 12:39
zhanghang123
Rank: 2
等 级:论坛游民
帖 子:39
专家分:24
注 册:2010-3-20
收藏
得分:0 
回复 2楼 寒风中的细雨
我对其中的树的分层不明白。运行结果如下:
结果(1):
a
s#
####
树的深度:2
叶子结点个数:1
结果(2):
s
ae
####
树的深度:3
叶子结点个数:1
程序中对分层如何定义的?请指教


2010-11-10 13:29
快速回复:二叉树的程序疑惑
数据加载中...
 
   



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

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