由一个或多个(n≥0)结点组成的有限集合T,有且仅有一个结点称为根(root),当n>1时,其余的结点分为m(m≥0)个互不相交的有限集合T1,T2,…,Tm。每个集合本身又是棵树,被称作这个根的子树 。

树的结构特点
非线性结构,有一个直接前驱,但可能有多个直接后继(1:n)
树的定义具有递归性,树中还有树。
树可以为空,即节点个数为0。

术语
根 即根结点(没有前驱)
叶子 即终端结点(没有后继)
森林 指m棵不相交的树的集合(例如删除A后的子树个数)
有序树 结点各子树从左至右有序,不能互换(左为第一)
无序树 结点各子树可互换位置。
双亲 即上层的那个结点(直接前驱) parent
孩子 即下层结点的子树 (直接后继) child
兄弟 同一双亲下的同层结点(孩子之间互称兄弟)sibling
堂兄弟 即双亲位于同一层的结点(但并非同一双亲)cousin
祖先 即从根到该结点所经分支的所有结点
子孙 即该结点下层子树中的任一结点
结点 即树的数据元素
结点的度 结点挂接的子树数(有几个直接后继就是几度)
结点的层次 从根到该结点的层数(根结点算第一层)
终端结点 即度为0的结点,即叶子
分支结点 除树根以外的结点(也称为内部结点)
树的度 所有结点度中的最大值(Max{各结点的度})
树的深度(或高度) 指所有结点中最大的层数(Max{各结点的层次})

树的表示法
图形表示法
广义表表示法
左孩子右兄弟表示法

树的结构
顺序存储
可规定为:从上至下、从左至右将树的结点依次存入内存。
重大缺陷:复原困难(不能唯一复原就没有实用价值)。
链式存储
可用多重链表:一个前趋指针,n个后继指针。
细节问题:树中结点的结构类型样式该如何设计?
即应该设计成“等长”还是“不等长”?
缺点:等长结构太浪费(每个结点的度不一定相同);
不等长结构太复杂(要定义好多种结构类型)。

二叉树的遍历
指按某条搜索路线遍访每个结点且不重复(又称周游)。

它是树结构插入、删除、修改、查找和排序运算的前提,是二叉树一切运算的基础和核心。
遍历方法
牢记一种约定,对每个结点的查看都是“先左后右” 。
限定先左后右,树的遍历有三种实现方案:
DLR LDR LRD
先 (根)序遍历 中 (根)序遍历 后(根)序遍历
DLR — 先序遍历,即先根再左再右
LDR — 中序遍历,即先左再根再右
LRD — 后序遍历,即先左再右再根

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值