标题:二叉树的程序疑惑
只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-325350-1-1.html




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

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