二叉树的基本运算实验报告C语言,【C语言】 二叉树的基本运算

• 二叉树节点类型BTNode:

typedef struct node

{

char data;

struct node *lchild, *rchild;

} BTNode;

创建二叉树

void CreateBTree(BTNode *&b, char *str)

{

BTNode *St[MaxSize], *p = NULL;

, ch, k, j = ;

b = NULL;

ch = str[j];

while (ch != '\0')

{

switch (ch)

{

; break;

; break;

case ')': --top; break;

default: p = (BTNode*)malloc(sizeof(BTNode));

p->data = ch; p->lchild = p->rchild = NULL;

if (b == NULL)

b = p;

else

{

switch (k)

{

: St[top]->lchild = p; break;

: St[top]->rchild = p; break;

}

}

}

++j;

ch = str[j];

}

}

输出二叉树

void DispBTree(BTNode *b)

{

if (b != NULL)

{

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

if (b->lchild != NULL || b->rchild != NULL)

{

printf("(");

DispBTree(b->lchild);

if (b->rchild != NULL)

printf(",");

DispBTree(b->rchild);

printf(")");

}

}

}

二叉树的高度:

int HeightBTree(BTNode *b)

{

if (b != NULL)

{

int i = HeightBTree(b->lchild);

int j = HeightBTree(b->rchild);

) : (j + ));

}

;

}

二叉树节点个数

int Nodes(BTNode *b)

{

if (b == NULL)

;

else if (b->lchild == NULL && b->rchild == NULL)

;

else

);

}

二叉树叶子节点

int LeafNodes(BTNode *b)

{

if (b == NULL)

;

else if (b->lchild == NULL && b->rchild == NULL)

;

else

return (LeafNodes(b->lchild) + LeafNodes(b->rchild) );

}

cpp

#include

#include

#define MaxSize 100

typedef struct node

{

char data;

struct node *lchild, *rchild;

} BTNode;

void CreateBTree(BTNode *&b, char *str)

{

BTNode *St[MaxSize], *p = NULL;

, ch, k, j = ;

b = NULL;

ch = str[j];

while (ch != '\0')

{

switch (ch)

{

; break;

; break;

case ')': --top; break;

default: p = (BTNode*)malloc(sizeof(BTNode));

p->data = ch; p->lchild = p->rchild = NULL;

if (b == NULL)

b = p;

else

{

switch (k)

{

: St[top]->lchild = p; break;

: St[top]->rchild = p; break;

}

}

}

++j;

ch = str[j];

}

}

void DispBTree(BTNode *b)

{

if (b != NULL)

{

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

if (b->lchild != NULL || b->rchild != NULL)

{

printf("(");

DispBTree(b->lchild);

if (b->rchild != NULL)

printf(",");

DispBTree(b->rchild);

printf(")");

}

}

}

int HeightBTree(BTNode *b)

{

if (b != NULL)

{

int i = HeightBTree(b->lchild);

int j = HeightBTree(b->rchild);

) : (j + ));

}

;

}

int Nodes(BTNode *b)

{

if (b == NULL)

;

else if (b->lchild == NULL && b->rchild == NULL)

;

else

);

}

int LeafNodes(BTNode *b)

{

if (b == NULL)

;

else if (b->lchild == NULL && b->rchild == NULL)

;

else

return (LeafNodes(b->lchild) + LeafNodes(b->rchild) );

}

int level(BTNode *b)

{

}

int main()

{

BTNode *b;

int h;

char str[] = "A(B(D(G, H)),C(E(,I), F)";

CreateBTree(b, str);

printf("二叉树:");

DispBTree(b); printf("\n");

h = HeightBTree(b);

printf("二叉树的高度为:%d\n", h);

h = Nodes(b);

printf("节点个数: %d\n", h);

h = LeafNodes(b);

printf("叶子节点个数: %d\n", h);

;

}

Hello world!(内含自己编写的C语言二叉树同学录)

修改:刷了一段时间的题,水平渐涨,发现同学录真的要做成市面可行的应用的话,应该按学号建立二叉平衡树,红黑树是一个可行的选择. 在同学的推荐下,来到博客园来找志同道合的人交流代码.3个月后参加蓝桥杯 ...

c语言二叉树基本操作

编译器为vs2013 #include "stdafx.h" #include #include #define O ...

C语言二叉树的建立与遍历

二叉树的建立和遍历都要用到递归,先暂时保存一下代码,其中主要是理解递归的思想,其它的就都好理解了.这里是三种遍历方式,其实理解一种,其它的几个就都理解了,就是打印出来的顺序不一样而已.建立和遍历的方式 ...

[数据结构]C语言二叉树的实现

树和图是数据结构中比较麻烦的东西,里面涉及的概念比较多,也最有用, 就比如一般树广泛应用于人工智能的博弈上,而基于图的广度优先和深度优先搜索也广泛应用于人工智能寻路上面 首先我们要把树进行分类: &g ...

Go语言二叉树定义及遍历算法实现

// binary_tree 二叉树 package Algorithm import ( "reflect" ) // 二叉树定义 type BinaryTree struct ...

R语言---- 数据的基本运算

一.基本运算符号 1.基本数学计算 +.-.*./.^.%%(求模).%/%(整除)注意:求模运算两边若为小数,则整数和小数部分分别求模.例:5.6%%2.2 2.比较运算 >.<. ...>

C语言——栈的基本运算在顺序栈上的实现

头文件 Seqstack.h #define maxsize 6 //const int maxsize = 6; // 顺序栈 typedef struct seqstack { int data[ ...

java 实现二叉树结构基本运算详细代码

static final int MAXLEN = 20; //最大长度 class CBTType //定义二叉树节点类型 { String data; //元素数据 CBTType left; / ...

C语言二叉树的创建、&lpar;先中后序&rpar;遍历以及存在的问题

#include #include #define True 1 #define False 0 typedef char TElemTy ...

随机推荐

VS2010如何使用Visual Studio Online在线服务管理团队资源(在线TFS)

前言 Visual Studio Online,也就是以前的Team Foundation Service,从名字可以看出这是一个团队资源管理服务.在微软的云基础架构中运行,无需安装或配置任何服务器, ...

Windows API 磁盘

这里的磁盘就是你的C,D,E,F,G盘啦 那么来看看吧windows Api来获取信息的呢 (1)DWORD GetLogicalDrives(void) 返回值是一个32位整形 32位每一位表示一个 ...

JQuery- 解析JSON数据

我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法.上例中得到的JSON数据如下,是一个嵌套JSON: {,,"nickname&qu ...

数据结构(树套树):ZJOI 2013 K大数查询

有几个点卡常数…… 发现若第一维为位置,第二维为大小,那么修改时第一维修改区间,查询时第一维查询区间,必须挂标记.而这种情况下标记很抽象,而且Push_down不是O(1)的,并不可行. 那要怎么做呢 ...

&lbrack;翻译&rsqb; C&num; 8&period;0 预览

原文: C# 8.0 Previewed 在一个Channel 9 的视频中,Mads Torgersen展示了C#8的首批四个新特性. 可空引用类型 过去我们报道过可空引用类型,简单地说,默认情况下 ...

EOS开发环境搭建

EOS开发环境搭建   在上一篇文章中,我们已经了解了EOS以及他的创始人Daniel Larimer的故事,本次为大家带来的是关于EOS开发环境搭建的内容.首先 ...

Ios证书申请流程

1. 创建appId l 苹果开发网站→Account-overview下的Cerficates,IDs & Profiles→AppIDs,点击添加 l 填写App ID描述,在App ID ...

&ast;&ast;&ast;小程序wx&period;getUserInfo不能弹出授权窗口后的解决方案

微信更新api后,wx.getUserInfo在开发和体验版本都不能弹出授权窗口.微信文档说明: 注意:此接口有调整,使用该接口将不再出现授权弹窗,请使用 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值