抽象数据类型树:树的结构定义本身+基本操作;
定义部分是递归的定义:树是n个节点的集合(n>=0) ①有且只有一个根节点;②当节点数目大于一时,其他节点可以分成互不相交的子树。
就逻辑结构而言,任何一棵树是一个二元组Tree={ root , F } root是根节点,F是m棵子树的森林。
------树----------------->>>>>>--------每个节点至多有两颗子树,且子树有左右之分--------->>>>>>>>二叉树
二叉树有五种基本形态:分别为空;只有根节点本身;只有左子树;只有右子树;有左右子树;
二叉树有很多性质;
二叉树的存储结构分析:
........................顺序结构,即采用数组实现。优点是能实现随机访问,缺点是可能空白很多,不方便插入。
.........................链式结构大致上和其相反。
对于二叉树的遍历,这是一个问题,即如何按照某条搜索路径去 ”访问“ 树中的每个节点,且每个节点均被 ”访问“ 一次。
先序,中序,后序--------------波兰式,中缀表示,逆波兰式。
遍历的方法: 遍历左子树, 遍历右子树 (可以把访问根节点的位放在三个留白处,分别按顺序对应以上三种遍历)。
遍历的方法还有深度和广度遍历
遍历的实质:将非线性的结构(树形)变为线性的结构(按某种顺序排列)
线索二叉树:一次遍历,次次顺序运行。(知道遍历的结果为线性队列,即前驱和后继确定后就能顺序访问,这就是线索的目的:确定每一个节点的前驱和后继)