qq_34091996 2021-12-22 21:47 采纳率: 100%
浏览 78
已结题

C++ 如何用算法判断输入数据的先序次序构不成二叉树

问题遇到的现象和发生背景

当输入一些无规律的数据时无法输出相应结果

问题相关代码,请勿粘贴截图
#include<iostream>
using namespace std;
typedef struct BiNode{
    char data;
    struct BiNode *lchild,*rchild;
}BiNode,*BiTree;
void CreateBiTree(BiTree &T){
   char ch;
   cin>>ch;
   if(ch=='#')T=NULL;
   else{
          T=new BiNode;
          T->data=ch;
          CreateBiTree(T->lchild);
          CreateBiTree(T->rchild);
   } 
}
void InOrder(BiTree T){
    if(T){
        InOrder(T->lchild);
        cout<<T->data;
        InOrder(T->rchild);
    }
}
void PreOrder(BiTree T){
    if(T){
        cout<<T->data;
        PreOrder(T->lchild);
        PreOrder(T->rchild);
    }
}
void PostOrder(BiTree T){
    if(T){
        PostOrder(T->lchild);
        PostOrder(T->rchild);
        cout<<T->data;
    }
}
int CountLeaf(BiTree T){
    static int count=0;
    if(T){
        if((!T->lchild)&&(!T->rchild))
        count++;
        CountLeaf(T->lchild);
        CountLeaf(T->rchild);
    }
    return count;
} 
int Depth(BiTree T){
    int m,n;
    if(T==NULL)return 0;
    else{
        m=Depth(T->lchild);
        n=Depth(T->rchild);
        if(m>n)return (m+1);
        else return (n+1);
    }
}
int CountNode(BiTree T){
    if(T==NULL)return 0;
    else
    return CountNode(T->lchild)+CountNode(T->rchild)+1;
}
int main(){
    BiTree tree=NULL;
    CreateBiTree(tree);
    if(){
        PreOrder(tree);cout<<endl;
        InOrder(tree);cout<<endl;
        PostOrder(tree);cout<<endl;
        cout<<Depth(tree)<<endl;
        cout<<CountNode(tree)<<endl;
        cout<<CountLeaf(tree)<<endl;
    }else{
        cout<<"创建二叉树失败"<<endl; 
    }
    }

运行结果及报错内容

随机输入时什么的都输出不出来

我的解答思路和尝试过的方法
我想要达到的结果

当输入数据的先序次序构不成二叉树时输出创建二叉树失败。



  • 写回答

1条回答 默认 最新

  • CSDN专家-Time 2021-12-22 22:19
    关注

    无规律的数据指的是什么样的数据?
    A B C D
    还是能够建二叉树的啊
    字母A 都能成为根节点。
    你是想判断满二叉树,平衡二叉树,完全二叉树吧?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月31日
  • 已采纳回答 12月23日
  • 创建了问题 12月22日

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大