adlicn 2021-05-05 14:41 采纳率: 50%
浏览 109
已结题

codeblocks 数据结构二叉树

#include <iostream>

using namespace std;





//链式二叉树节点数据类型定义
typedef char ElemType;
typedef struct BinTreeNode
{
    ElemType data;
    struct BinTreeNode*lchild;
    struct BinTreeNode*rchild;
}BinTreeNode;


//创建二叉树
 void CreateBiTree(BiTree  &T);
//先序遍历
 Status PreOrderTraverse(BiTree T);
//中序遍历
 Status InOrderTraverse(BiTree T);


int NodeCount(BiTree T){

int main()
{
    cout<<"Hello 二叉树的应用!"<< endl;
    BiNode *T;

    cout<<endl<<"创建二叉树"<<endl;
    CreateBiTree(T);

    cout<<endl<<"先序遍历结果"<<endl;
    PreOrderTraverse(T);

     cout<<endl<<"中序遍历结果"<<endl;
     InOrderTraverse(T);

      cout<<endl<<"结点总数"<<endl;
    int number =NodeCount(T);
    cout<<number;
    return 0;
}

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 PreOrderTraverse(BiTree T){
  if(T=NULL)
    return 1;
  else{
    cout<<T->data;
    PreOrderTraverse(T->lchild);
    PreOrderTraverse(T->rchild);
  }
  return 0;
}
Status InOrderTraverse(BiTree T){
  if(T==NULL)
    return 1; //空二叉树
  else{
     InOrderTraverse(T->lchild); //递归遍历左子树
      cout<<T->data; //访问根结点
     InOrderTraverse(T->rchild); //递归遍历右子树
    }
    return 0;
}

Status PostOrder(BiTree T)
{
    if(T=NULL)
    return 1;
  else{
	PostOrderTraverse(T->lchild);
	PostOrderTraverse(T->rchild);
	cout << T->data << endl;
	}
	return 0;
}

想用以上代码实现图片的运行 但是老是报错不知道该如何更改求大神指点

 

  • 写回答

2条回答 默认 最新

  • 正在学C++ 2021-05-05 16:00
    关注
    #include <iostream>
    using namespace std;
    typedef int Status;
    
    //链式二叉树节点数据类型定义
    typedef char ElemType;
    typedef struct BinTreeNode
    {
        ElemType data;
        struct BinTreeNode*lchild;
        struct BinTreeNode*rchild;
    }BinTreeNode, *BiTree ;
    
    //创建二叉树
    void CreateBiTree(BiTree  &T);
    //先序遍历
    Status PreOrderTraverse(BiTree T);
    //中序遍历
    Status InOrderTraverse(BiTree T);
    //后续遍历
    Status PostOrderTraverse(BiTree T);
    //节点总数
    int NodeCount(BiTree T);
    //叶子节点总数
    int LeafNodeCount(BiTree T);
    
    
    int main()
    {
        cout<<"Hello 二叉树的应用!"<< endl;
        BiTree T;
        cout<<"创建二叉树"<<endl;
        CreateBiTree(T);
        cout<<endl<<"先序遍历结果"<<endl;
        PreOrderTraverse(T);
        cout<<endl<<"中序遍历结果"<<endl;
        InOrderTraverse(T);
        cout<<endl<<"后序遍历结果"<<endl;
        PostOrderTraverse(T);
        cout<<endl<<"结点总数"<<endl;
        cout<<NodeCount(T)<<endl;
        cout<<"叶子结点总数"<<endl;
        cout<<LeafNodeCount(T)<<endl;
        return 0;
    }
    void CreateBiTree (BiTree &T) {
        char ch;
        cin>>ch;
        if(ch=='#') //输入‘#’代表空树
            T=NULL;
        else{
                T = new BinTreeNode();
                T->data=ch; //生成根节点
                CreateBiTree(T->lchild);//递归创建左子树
                CreateBiTree(T->rchild);//递归创建右子树
            }
    }
    Status PreOrderTraverse(BiTree T){
        if(T==NULL) return 1;
        else{
                cout<<T->data;
                PreOrderTraverse(T->lchild);
                PreOrderTraverse(T->rchild);
            }
        return 0;
    }
    Status InOrderTraverse(BiTree T){
        if(T==NULL) return 1; //空二叉树
        else{
            InOrderTraverse(T->lchild); //递归遍历左子树
            cout<<T->data; //访问根结点
            InOrderTraverse(T->rchild); //递归遍历右子树
            }
        return 0;
    }
    Status PostOrderTraverse(BiTree T){
        if(T==NULL)return 1;
        else{
            PostOrderTraverse(T->lchild);
            PostOrderTraverse(T->rchild);
            cout << T->data;
            }
        return 0;
    }
    int NodeCount(BiTree T){
        if (T==NULL) return 0;
        else return 1+NodeCount(T->lchild)+NodeCount(T->rchild);
    }
    int LeafNodeCount(BiTree T){
        if(T==NULL) return 0;
        if(T->lchild==NULL && T->rchild==NULL) return 1;
        else return LeafNodeCount(T->lchild)+LeafNodeCount(T->rchild);
    }
    //12C##DE#G##F###

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码