树(2)2二叉树2-1二叉树的定义1.定义二叉树是有n(n>=0)个结点的有限集合
(1)该集合或者为空(n=0);(2)或者由一个根结点及两个不相交的分别称为左子树和右子树组成的非空树;(3)左子树和右子树同样又都是二叉树
通俗地讲:在一棵非空的二叉树中,每个结点至多只有两棵子树,分别称为左子树和右子树,且左右子树的次序不能任意交换
所以,二叉树是特殊的有序树
2.二叉树的形态根据定义,二叉树可以有五种基本形态,如图所示
(a)(b)(c)(d)(e)二叉树的基本形态其中:(a)空二叉树;(b)仅有根结点的二叉树;(c)右子树为空的二叉树;(d)左子树为空的二叉树;(e)左、右子树均非空的二叉树
ФLchildLchildRchildRchild3.二叉树的基本操作:(1)isEmpty():判断是否空树
(2)intcount();返回二叉树的结点个数(3)intheight();返回二叉树的高度(4)BinaryNodegetRoot():返回根结点元素
(5)BinaryNodegetParent(BinaryNodechild):返回child的父母结点
(6)voidpreOrder():先根次序遍历二叉树
3.二叉树的基本操作:(7)voidinOrder():中根次序遍历二叉树
(8)voidlevelOrder():后根次序遍历二叉树
(9)BinaryNodesearch(Eelement):查找并返回元素为element的结点
(10)voidinsert(BinaryNodep,Eelement,booleanleftChild):插入element做为p的孩子左/右孩子结点
(11)voidremove(BinaryNodep,booleanleftChild):删除p结点的左/右子树
(12)voidclear():清空树
2-2二叉树的性质性质