m0_70166321 2022-10-11 00:53 采纳率: 100%
浏览 33
已结题

用这段不完整代码写一个判断给定二叉树是否为二叉排序树的算法

  • #include <stdio.h>
    #include <stdlib.h>
    typedef struct TNode *Position;
    typedef Position BinTree;
    struct TNode
    {
    int data;
    BinTree lchild,rchild;
    };
    BinTree B[100];
    BinTree CreateBinTree()
    {
    int num,i,n;
    BinTree t,s;
    t=NULL;
    printf("建立二叉树(-1表示为虚结点,0表示输入结束):\n");
    num=0;
    scanf("%d",&n);
    while(n!=0)
    {
      s=(BinTree)malloc(sizeof(BinTree));  
      s->data=n;  
      s->lchild=s->rchild=NULL;  
      num++;  
      if(!t)  
          t=s;  
      B[num]=s;  
      scanf("%d",&n);  
    
    }
    for(i=1;i<=num;i++)
    {
      if(B[i]->data!=-1)  
      {  
          if(2*i<=num && B[2*i]->data!=-1)  
              B[i]->lchild=B[2*i];  
          if(2*i+1<=num && B[2*i+1]->data!=1)  
              B[i]->rchild=B[2*i+1];  
      }  
    
    }
    return t;
    }
    int IsSearchTree(BinTree t) //判别给定的二叉树是否是二叉排序树
    {
    /* 你的代码将被嵌在这里 */
    }
    int main(void)
    {
    int flag=0;
    BinTree tree;
    tree=CreateBinTree();
    flag=IsSearchTree(tree);
    if(flag)
      printf("这棵树是二叉排序树!\n");  
    
    else
      printf("这棵树不是二叉排序树!\n");  
    
    return 0;
    }
    已经晕了
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-11 11:33
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月26日
  • 已采纳回答 10月18日
  • 创建了问题 10月11日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵