鱼C论坛

 找回密码
 立即注册
查看: 3701|回复: 1

大神帮我看看代码运行后为什么不显示最小结点的结果

[复制链接]
发表于 2021-2-22 20:53:43 | 显示全部楼层 |阅读模式

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

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

x
#include <iostream>
#include <malloc.h>
using namespace std;
#define MaxSize 50

typedef struct node  
{  
        char data;
    struct node *lchild;  
    struct node *rchild;  
}BTNode;

//创建二叉树
void CreateBTree(BTNode *&b,const char *str)
{
        BTNode *St[MaxSize],*p;
        int top=-1,k,j=0;
        char ch;
        b=NULL;
        ch=str[j];
        while(ch!='\0')
        {
                switch(ch)
                {
                        case '(':top++;St[top]=p;k=1;break;
                        case ')':top--;break;
                        case ',':k=2;break;
                        default:p=(BTNode *)malloc(sizeof(BTNode));
                        p->data=ch;
                        p->lchild=p->rchild=NULL;
                        if(b==NULL)
                                b=p;
                        else
                        {
                                switch(k)
                                {
                                        case 1:St[top]->lchild=p;break;
                                        case 2:St[top]->rchild=p;break;
                                }
                        }
                }
                j++;
                ch=str[j];
        }
}
//输出二叉树
void DispBTree(BTNode *b)
{
        if(b!=NULL)
        {
                printf("%c",b->data);
                if(b->lchild!=NULL||b->rchild!=NULL)
                {
                        printf("(");
                        DispBTree(b->lchild);
                        if(b->rchild!=NULL)
                                printf(",");
                        DispBTree(b->rchild);
                                printf(")");
                 }
         }
  }
//销毁二叉树
void DestroyBTree(BTNode *&b)
{
        if(b!=NULL)
        {
                DestroyBTree(b->lchild);
                DestroyBTree(b->rchild);
                free(b);
         }
  }
//找最小值的结点值
void FindMinNode(BTNode *b,char &min)
{
        if(b->data<min)
                min=b->data;
        FindMinNode(b->lchild,min);//在左子树中找最小结点值
        FindMinNode(b->rchild,min);//在右子树中找最小结点值                
}
//输出最小结点值
void MinNode(BTNode *b)
{
        if(b!=NULL)
        {
                char min=b->data;
                FindMinNode(b,min);
                printf("Min=%c\n",min);
        }               
}

int main()
{
        BTNode *b;
        CreateBTree(b,"E(B(D(,G)),C(A,F))");
        cout<<"二叉树为:"<<endl;
        DispBTree(b);
        cout<<endl;
        cout<<"最小结点值为:";
        MinNode(b);
        DestroyBTree(b);
        return 0;       
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-2 09:18:46 | 显示全部楼层
不应该是min->data吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-2 20:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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