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

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

dcebd7a0de6265b6ccae5ead692f1eab.png寡津笙汐k2013.06.28浏览468次分享举报

#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(&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(T)

{

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);

Inorder(T);

Postorder(T);

CountLeaf(T,s);

d=Depth(T);

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

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

}

就这个算法 运行后在键盘怎么输入 怎么按了回车就结束了?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值