文档详情

数据结构与算法分析第5讲 树与二叉树.ppt

发布:2024-11-06约1.3万字共136页下载文档
文本预览下载声明

Chapter5

TreeBinaryTree;树的类型定义;数据对象D:;;结点;(从根到结点的)路径;结点的层次;任何一棵非空树是一个二元组

Tree=(root,F)

其中root被称为根结点

F被称为子树森林;(1)有确定的根

(2)树根和子树根之间为有向关系;对比树型结构和线性结构的结构特点;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;基本操作:;Root(T)//求树的根结点;InitTree(T)//初始化置空树;ClearTree(T)//将树清空;二叉树的类型定义

;二叉树或为空树,或是由一个根结点加上两棵分别称为左子树和右子树的、互不交叉的二叉树组成;二叉树的五种基本形态;二叉树的主要基本操作;

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:;二叉树的存储结构;#defineMAX_TREE_SIZE100

//二叉树的最大结点数

typedefTElemTypeSqBiTree[MAX_

TREE_SIZE];

//0号单元存储根结点

SqBiTreebt;;完全二叉树的一般二叉树的

数组表示数组表示;A;单支树;A;typedefstructBiTNode{//结点结构

TElemTypedata;

structBiTNode*lchild,*rchild;

//左右孩子指针

}BiTNode,*BiTree;;链表表示;A;typedefstructTriTNode{//结点结构

TElemTypedata;

structTriTNode*lchild,*rchild;

//左右孩子指针

structTriTNode*parent;//双亲指针

}TriTNode,*TriTree;;二叉链表的静态结构;

二叉树遍历

(BinaryTreeTraversal);顺着某一条搜索路径巡访二叉树

中的结点,使得每个结点均被访问一

次,而且仅被访问一次;“遍历”是任何类型均有的操作,

对线性结构而言,只有一条搜索路

径(因为每个结点均只有一个后继),

故不需要另加讨论。而二叉树是非

线性结构,每个结点有两个后继,

则存在如何遍历即按什么样的搜索

路径遍历的问题;对“二叉树”而言,可以有三条搜索路径;设访问根结点记作V

遍历根的左子树记作L

遍历根的右子树记作R

显示全部
相似文档