/**
* 实验题目:
* 实现二叉树各种基本运算的算法
* 实验目的:
* 领会二叉链存储结构和掌握二叉树中各种基本运算算法设计
* 实验内容:
设计程序,实现二叉树的基本运算,在此基础上,完成如下功能:
* 1、由二叉树创建对应的二叉链存储结构b,该二叉树的括号表示串为
* "A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))"。
* 2、输出二叉树b
* 3、输出'H'结点的左、右孩子结点值
* 4、输出二叉树b的高度
* 5、释放二叉树b
*/
#include <stdio.h>
#include <malloc.h>
#define MAX_SIZE 100
typedef char ElemType;
typedef struct node
{
ElemType data; // 数据元素
struct node *lchild; // 指向左孩子结点
struct node *rchild; // 指向右孩子结点
}BTNode; // 声明二叉链结点类型
/*-------------由括号表示串str创建二叉链b-----------------*/
static void create_btree(BTNode *&b, char *str) // 创建二叉树(形参b:指针的引用)
{
BTNode *p;
BTNode *St[MAX_SIZE]; // 定义一个顺序栈
int k;
int j = 0;
int top = -1; // 栈顶指针初始化
char ch;
b = NULL; // 建立的二叉树初始时为空
ch = str[j]; // 取第一个字符
while(ch != '\0') // str未扫描完时循环
{
switch(ch)
{
case '(': // 开始处理左子树
top++;
St[top] = p;

本文详细介绍了一种基于括号表示法创建二叉树的方法,并实现了二叉树的各种基本运算,包括创建、输出、查找节点、计算高度及释放内存等。通过具体实例,展示了算法的完整过程和运行结果。
最低0.47元/天 解锁文章
3340

被折叠的 条评论
为什么被折叠?



