看之前请注意!博主小菜鸡一个,所以有许多瑕疵,请做好心理准备!
编程语言:C
编译环境:Dev-C++
编程实现书P121 ADT BinaryTree 基本操作20个,用二叉链表结构实现
基本概念:
二叉树是一种应用广泛的树型结构,它的特点是每个结点至多只有两棵子树
并且二叉树的子树有左右之分,其次序不能任意颠倒
1.Status InitBiTree(BiTree *T) 构造空二叉树
2.Status DestroyBiTree(BiTree *T) 销毁二叉树,前提T存在
3.Status CreateBiTree(BiTree *T) 用先序遍历创建二叉树
4.Status ClearBiTree(BiTree *T) 清空二叉树,前提T存在
5.Status BiTreeEmpty(BiTree T) 探空,前提T存在,很抱歉只有这个我不会
6.int BiTreeDepth(BiTree T) 返回二叉树的深度,前提T存在,这个我写的不太好,有缺点
7.BiTree Root(BiTree T) 返回二叉树的根,前提T存在
8.ElemType Value(BiTree T,BiTree e) 若e是T中某个结点,返回e的值,前提T存在
9.Status Assign(BiTree T,BiTree *e,ElemType value) 若e是T中某个结点,结点e赋值为value,前提T存在
10.BiTree Parent(BiTree T,BiTree e) 若e是T中某个非根结点,则返回它的双亲,否则返回NULL,前提T存在
11.BiTree LeftChild(BiTree T,BiTree e) 若e是T中某个结点,返回e的左孩子。若e无左孩子,则返回NULL,前提T存在
12.BiTree RightChild(BiTree T,BiTree e) 若e是T中某个结点,返回e的右孩子。若e无右孩子,则返回NULL,前提T存在
13.BiTree LeftSibling(BiTree T,BiTree e) e是T中某个结点,返回e的左兄弟。若e是其双亲的左孩子或无左兄弟,则返回NULL,前提T存在
14.BiTree RightSibling(BiTree T,BiTree e) e是T中某个结点,返回e的右兄弟。若e是其双亲的右孩子或无右兄弟,则返回NULL,前提T存在
15.Status InsertChild(BiTree T,BiTree p,int LR,BiTree c)
初始条件:T存在,p指向T中某个结点,LR为0或1,非空二叉树c与T不相交且右子树为空。
操作结果:根据LR为0或1,插入c为T中p所指结点的左或右子树。p所指结点的原有左或右子树则成为c的右子树。
16.Status DeleteChild(BiTree T,BiTree p,int LR)
初始条件:T存在,p指向T中某个结点,LR为0或1
操作结果:根据LR为0或1,删除T中p所指结点的左或右子树
17.Status PreOrderTraverse(BiTree T) 先序遍历二叉树,前提T存在
18.Status InOrderTraverse(BiTree T) 中序遍历二叉树,前提T存在
19.Status PostOrderTraverse(BiTree T) 后序遍历二叉树,前提T存在
20.Status LevelOrderTraverse(BiTree T) 层序遍历二叉树,前提T存在
源代码:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
//函数结果状态代码
#define OK 1
#define ERROR 0
#define T