树-概述

1.       线性结构对于大量的数据来说,不管是顺序表还是链表,都有优劣:

1.1    顺序表(或者说是向量vectore),虽然它的访问(search)时间复杂度在二分查找时可以达到O(log n),但是大量数据无法分配这么多连续空间,而且其插入删除其时间复杂度不管最坏的还是平均的都很高;

1.2    链表虽然无连续存储空间的限制,它的插入删除其时间复杂度也仅仅O(1),但是它的访问(search)时间复杂度不管最坏的还是平均的都很高。

2.       树结构其绝大部分操作的平均时间复杂度为O(log n),再对树结构进行严格约束,例如:二叉树,平衡二叉树,搜索二叉树等,树的效率还会更好的,现实中很多领域使用到了树的结构。

3.       树(tree)的定义(这里采用递归的方式,递归定义树显得更自然一些):一棵树是一些节点的集合,这个集合可以为空集,若非空,一棵树由根(root)节点r以及0个或多个非空的字树(递归开始了)T1,T2...等组成,这些子树中每颗树的根都被来自r的一条有向边相连,这样不难看出:一棵树有n个节点,则有n-1条边相连。

4.       树(tree)中的常用术语

根节点root,

根的子节点child,

子节点child必定有且仅有唯一一个父节点parent,

具有相同父节点parent的节点叫做sibling,

类似的有祖父节点grandparent和孙子节点grandchild,

没有子节点的节点称为叶节点(leaf),

从根到某节点的唯一路径长度为该节点的深度(depth),所有节点深度最大的值为该树的深度,

某节点到叶节点路径最长的为该节点子树的高(height),根节点到叶节点路径最长的为节点子树的高(height),只有根节点的树高度为1,空树高度为-1,

由树的深度和高度定义可以知道 某节点的深度+该节点高度 <= 整棵树的高度

5.       现实中的树结构:

Linux的文件系统目录结构在纸上画出来就是一棵树的样子,当然,它的本质不仅仅是树,而是有指向目录本身及其指向父目录的的指针,属于类树(treelike),(类是类似的意思,不要理解错了)

6.       我们可以认为树是一种特殊的图结构,特殊之处在于:

                     树是无环的连通图;

                    树可能达到极小连通图(边最少);

                    树可能达到极大无环图(边最多);

                    一旦树根确定,节点到根之间有唯一路径。

 

转载于:https://my.oschina.net/calmsnow/blog/734181

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值