鱼C论坛

 找回密码
 立即注册
查看: 4005|回复: 4

求问关于采用二叉链表储存结构的二叉树整形数据域输入问题

[复制链接]
发表于 2020-11-25 01:31:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目如下:

算法设计题:已知二叉树采用二叉链表储存结构,且数据域均为正整数,写一个算法求数据域的最大值。算法描述函数的函数原型要求是int FindMaxValue (BiTree BT)。


问题如下:
       想知道数据域为整形的二叉树怎么输入才能正确创建成功啊?求解答。十分感谢
代码如下:
//已知二叉树采用二叉链表储存结构,且数据域均为正整数,写一个算法求数据域的最大值。算法描述函数的函数原型要求是int FindMaxValue (BiTree BT)。
#include<stdio.h>
#include<stdlib.h>
#define OK 1

typedef int TElemType;
typedef struct BiNode
{
        TElemType data;
        struct BiNode *lchild,*rchild;
}BiNode,*BiTree;

int CreateBiTree(BiTree &BT)
{
        TElemType ch;
        scanf("%d",&ch);
        if(ch=='#')
                BT=NULL;
        else
        {
                if(!(BT=(BiTree)malloc(sizeof(BiNode))))
                {
                        printf("未知错误!");
                        exit(0);
                }
                BT->data=ch;
                CreateBiTree(BT->lchild);
                CreateBiTree(BT->rchild);
        }
        return OK;
}

void PreOrder(BiTree BT)
{
        if(BT!=NULL)
        {
                printf("%d",BT->data);
                PreOrder(BT->lchild);
                PreOrder(BT->rchild);
        }
}


int FindMaxValue(BiTree BT)
{
        if(BT==NULL)
                return 0;
        int lmax=FindMaxValue(BT->lchild);
        int rmax=FindMaxValue(BT->rchild);
        int max=((lmax>rmax)?lmax:rmax);
        return ((max>BT->data)?max:BT->data);

}


int main()
{
        BiTree BT;
        CreateBiTree(BT);
        PreOrder(BT);
        printf("\n");
        //printf("%d\n",FindMaxValue(BT));
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-25 19:27:15 | 显示全部楼层
当一个父母结点的子结点全部为空(‘#’)结点时结束
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-25 19:29:13 | 显示全部楼层
最好加上这两句,好理解,便于你的输出
printf("请输入%d的左结点:",BT->data);
         CreateBiTree(BT->lchild);
         printf("请输入%d的右结点:",BT->data);
         CreateBiTree(BT->rchild);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-30 15:35:52 | 显示全部楼层
巴巴鲁 发表于 2020-11-25 19:27
当一个父母结点的子结点全部为空(‘#’)结点时结束

我的意思是对于整形数据如果要输入两个如13 14那么中间需要打个空格吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-30 20:22:22 | 显示全部楼层
1298150336 发表于 2020-11-30 15:35
我的意思是对于整形数据如果要输入两个如13 14那么中间需要打个空格吗

打回车
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 13:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表