第七章
树和二叉树
;7.1 树的类型定义;7.1
树的类型定义;数据对象 D:;A;对比树型结构和线性结构的结构特点;线性结构;基 本 术 语;结点:;(从根到结点的)路径:;任何一棵非空树是一个二元组
Tree = (root,F)
其中:root 被称为根结点
F 被称为子树森林;(1) 有确定的根;
(2) 树根和子树根之间为有向关系。; 基本操作:; Root(T) // 求树的根结点 ;InitTree(T) // 初始化置空树 ; ClearTree(T) // 将树清空 ;7.2
二叉树的类型定义
; 二叉树或为空树,或是由一个根结点加上两棵分别称为左子树和右子树的、互不交的二叉树组成。;二叉树的五种基本形态:; 二叉树的主要基本操作:; Root(T); Value(T, e); Parent(T, e);
LeftChild(T, e); RightChild(T, e);
LeftSibling(T, e); RightSibling(T, e);
BiTreeEmpty(T); BiTreeDepth(T);
PreOrderTraverse(T, Visit());
InOrderTraverse(T, Visit());
PostOrderTraverse(T, Visit());
LevelOrderTraverse(T, Visit());; InitBiTree(T);
Assign(T, e, value);
CreateBiTree(T, definition);
InsertChild(T, p, LR, c);;ClearBiTree(T);
DestroyBiTree(T);
DeleteChild(T, p, LR);;二叉树的重要特性; 性质 1 : 在二叉树的第 i 层上至多有2i-1 个结点。 (i≥1);性质 2 : 深度为 k 的二叉树上至多含 2k-1 个结点(k≥1)。; 性质 3 : 对任何一棵二叉树,若它含有n0 个叶子结点、n2 个度为 2 的结点,则必存在关系式:n0 = n2+1。;两类特殊的二叉树:; 性质 4 : 具有 n 个结点的完全二叉树的深度为 ? log2n? +1 。;;性质 5 :;证明:;7.3
二叉树的存储结构;#define MAX_TREE_SIZE 100
// 二叉树的最大结点数
typedef TElemType SqBiTree[MAX_
TREE_SIZE];
// 0号单元存储根结点
SqBiTree bt;;A;二、二叉树的链式存储表示;A;typedef struct BiTNode { // 结点结构
TElemType data;
struct BiTNode *lchild, *rchild;
// 左右孩子指针
} BiTNode, *BiTree;;静态二叉链表;typedef struct SBiTNode { // 结点结构
TElemType data;
int lchild, rchild; // 左右孩子指针
} SBiTNode;;A; typedef struct TriTNode { // 结点结构
TElemType data;
struct TriTNode *lchild, *rchild;
// 左右孩子指针
struct TriTNode *parent; //双亲指针
} TriTNode, *TriTree;;0
1
2
3
4
5
6; typedef struct BPTNode { // 结点结构
TElemType data;
int parent; // 指向双亲的指针
char LRTag; // 左、右孩子标志域
} BPTNode
typedef struct BPTree{ // 树结构
BPTNode nodes[M
原创力文档

文档评论(0)