问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据结构C语言版 二叉树构造算法实验 在键盘上怎么输入

发布网友 发布时间:2022-04-24 05:54

我来回答

2个回答

热心网友 时间:2023-10-03 15:06

同学你好:我帮你看了你的程序:这是修改了的程序:希望你能采纳:

这是实验结果:是正确的

 

 

#include "stdio.h"

#include "stdlib.h"

#define OK 1

#define ERROR 0

#define OVERFLOW -2

 

 

typedef char TElemType;

typedef int Status;

typedef struct BiTNode { // 结点结构

    TElemType      data;

    struct BiTNode  *lchild, *rchild; 

                                     // 左右孩子指针

} BiTNode, *BiTree;

 

 

//以下是建立二叉树存储结构

Status CreateBiTree(BiTree &T) {

//请将该算法补充完整,参见第6章课件算法或课本

 char ch;

 scanf(" %c",&ch);

 if(ch=='#') T=NULL;

 else{

  if(!(T=(BiTNode*)malloc(sizeof(BiTNode))))

   exit(OVERFLOW);

  T->data=ch;

  CreateBiTree(T->lchild);

  CreateBiTree(T->rchild);

 }

 return OK;

 

 

} // CreateBiTree

void Preorder(BiTree T)

{

 if(NULL == T)

 {

  return;

 }

 else

 {

  printf("%c",T->data);

  Preorder(T->lchild);

  Preorder(T->rchild);

 }     


 

 

void Inorder(BiTree T)

{ // 中序遍历二叉树 

//请将该算法补充完整,参见第6章课件算法

  if(T)

  {

   Inorder(T->lchild); 

   printf("%c",T->data);

   Inorder(T->rchild);

  }

}

void Postorder(BiTree T)

{ // 后序遍历二叉树 

 //请将该算法补充完整,参见第6章课件算法

 if(T)

 {

  Postorder(T->lchild);

  Postorder(T->rchild);

  printf("%c",T->data);

 }

}

 

 

//以下是求叶子结点数

void CountLeaf(BiTree T,int& count){ 

   //请将该算法补充完整,参见第6章课件算法

 if(T){

  if((!T->lchild)&&(!T->rchild))

   count++;

  CountLeaf(T->lchild,count);

  CountLeaf(T->rchild,count);

 }


 

 

//以下是求二叉树的深度

int Depth(BiTree T ){

      //请将该算法补充完整,参见第6章课件算法

 int depthval,depthLeft,depthRight;

 if(!T)  depthval=0;

 else{

  depthLeft = Depth(T->lchild);

  depthRight = Depth(T->rchild);

  if(depthLeft>depthRight)depthval = 1+depthLeft;

  else depthval = 1+depthRight;

 }

 return depthval;

}

 

 

void main(){

BiTree T;

int s=0,d;

printf("\n creat of the bitree:\n"); 

CreateBiTree(T);

printf("\n output result of Preorder:\n"); 

Preorder(T); 

printf("\n");

 

printf("\n output result of Inorder:\n"); 

Inorder(T);

printf("\n");

 

printf("\n output result of Postorder:\n"); 

Postorder(T);

printf("\n");

 

CountLeaf(T,s);

d=Depth(T);

printf("\n leaves=%d\n",s);

printf("\n depth=%d\n",d);

}

 

 

热心网友 时间:2023-10-03 15:06

建立二叉树函数里,这句错了:
scanf(&ch); ===》scanf("%c",&ch);

热心网友 时间:2023-10-03 15:06

同学你好:我帮你看了你的程序:这是修改了的程序:希望你能采纳:

这是实验结果:是正确的

 

 

#include "stdio.h"

#include "stdlib.h"

#define OK 1

#define ERROR 0

#define OVERFLOW -2

 

 

typedef char TElemType;

typedef int Status;

typedef struct BiTNode { // 结点结构

    TElemType      data;

    struct BiTNode  *lchild, *rchild; 

                                     // 左右孩子指针

} BiTNode, *BiTree;

 

 

//以下是建立二叉树存储结构

Status CreateBiTree(BiTree &T) {

//请将该算法补充完整,参见第6章课件算法或课本

 char ch;

 scanf(" %c",&ch);

 if(ch=='#') T=NULL;

 else{

  if(!(T=(BiTNode*)malloc(sizeof(BiTNode))))

   exit(OVERFLOW);

  T->data=ch;

  CreateBiTree(T->lchild);

  CreateBiTree(T->rchild);

 }

 return OK;

 

 

} // CreateBiTree

void Preorder(BiTree T)

{

 if(NULL == T)

 {

  return;

 }

 else

 {

  printf("%c",T->data);

  Preorder(T->lchild);

  Preorder(T->rchild);

 }     


 

 

void Inorder(BiTree T)

{ // 中序遍历二叉树 

//请将该算法补充完整,参见第6章课件算法

  if(T)

  {

   Inorder(T->lchild); 

   printf("%c",T->data);

   Inorder(T->rchild);

  }

}

void Postorder(BiTree T)

{ // 后序遍历二叉树 

 //请将该算法补充完整,参见第6章课件算法

 if(T)

 {

  Postorder(T->lchild);

  Postorder(T->rchild);

  printf("%c",T->data);

 }

}

 

 

//以下是求叶子结点数

void CountLeaf(BiTree T,int& count){ 

   //请将该算法补充完整,参见第6章课件算法

 if(T){

  if((!T->lchild)&&(!T->rchild))

   count++;

  CountLeaf(T->lchild,count);

  CountLeaf(T->rchild,count);

 }


 

 

//以下是求二叉树的深度

int Depth(BiTree T ){

      //请将该算法补充完整,参见第6章课件算法

 int depthval,depthLeft,depthRight;

 if(!T)  depthval=0;

 else{

  depthLeft = Depth(T->lchild);

  depthRight = Depth(T->rchild);

  if(depthLeft>depthRight)depthval = 1+depthLeft;

  else depthval = 1+depthRight;

 }

 return depthval;

}

 

 

void main(){

BiTree T;

int s=0,d;

printf("\n creat of the bitree:\n"); 

CreateBiTree(T);

printf("\n output result of Preorder:\n"); 

Preorder(T); 

printf("\n");

 

printf("\n output result of Inorder:\n"); 

Inorder(T);

printf("\n");

 

printf("\n output result of Postorder:\n"); 

Postorder(T);

printf("\n");

 

CountLeaf(T,s);

d=Depth(T);

printf("\n leaves=%d\n",s);

printf("\n depth=%d\n",d);

}

 

 

热心网友 时间:2023-10-03 15:06

建立二叉树函数里,这句错了:
scanf(&ch); ===》scanf("%c",&ch);
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我女朋友我在同事面前说她是我媳妇她默认,在她组长面前就不承认了什么... 跨省迁户口需要的手续 户口跨省迁移需要哪些手续? cf空白名字怎么打(cf空白名字怎么打2021) 关于旅行的电影 就是一个人旅行放松心灵那种 不要纪录片 模拟人生2高斯的遗产给儿子还是女儿 模拟人生2如何跟高斯结婚啊? 模拟人生2高斯怎么找到贝拉,找到后能怎么办? 我的米2插上充电器后屏幕一直闪,快速的一下显示充电一下没在充电。请 ... ...屏幕乱闪 充不进去电 用手机连接电脑也是一样 重建二叉树的程序问题 C++二叉树构造问题 怎么结束呢 C语言,现有一棵二叉树和一个有序数组,要求通过这棵二叉树构造有序数组。它们的类型声明如下,请 现有一棵二叉树和一个有序数组,要求通过这棵二叉树构造有序数组。它们的类型声明如下,请定义有序数组 Java二叉树构造问题 要求:从控制台输入一行扩展二叉树的字符串,然后根据这个字符串构造二叉树。THX.. 二叉树c语言实现 二叉树能干吗 关于C语言二叉树! 二叉树的构造问题 c语言数据结构 二叉树构造 输出问题 二叉树由哪3个基本元素组成? 怎么线索二叉树? 构造二叉树,谢谢 先序构建二叉树 C语言:一个二叉树构造问题 C语言 二叉树构造问题 二叉树构造问题 中国抗日英雄 请大家给我推荐一款强光手电筒? 铭久 手电筒怎么换档 数据结构二叉树 编程实现以上二叉树中序遍历操作,输出遍历序列,求写代码~~ 统编(部编)四年级语文下册9《短诗三首》教学设计及教学反思 家庭居住湿度多少为标准? 古诗的教学反思怎么写 教学古诗望天门山和饮湖上初晴后雨教学反思 破阵子为陈同甫赋壮词以寄之教学反思 房间内多少温、湿度比较合适? 四年级下册古诗词三首感悟 17.《古诗三首:书湖阴先生壁》教学反思 室内正常的湿度是多少 (教学反思参考1)古诗三首 元日清明九月九日忆山东兄弟 四年级下册《古诗词三首》的读后感 房间内的湿度多少较合适? 四年级下册《古诗词三首》的读后感? 四下23古诗词三首预习卡评课 室内空气湿度多少合适? 关于四年级下册第一课古诗词三首的问题有哪些 古诗词三首四年级下册23课的教案附答案 部编人教版五年级语文上册《21 古诗词三首》教学设计及教学反思