数据结构 —— 树
来源:互联网 发布:淘宝顶级卖家年收入 编辑:程序博客网 时间:2024/05/16 06:17
一、树的结构表示
1.1. 双亲表示法
除去根节点,树中每个节点都有且仅有一个双亲节点:
该表示法在寻找父节点时:O(n) = 1;子节点时:O(n) = n;兄弟节点时:O(n) = n。
1.2. 孩纸表示法
除去叶节点,树中每个节点都有孩纸,且孩纸中总是最少有一个老大,老大有小弟时,总有一个和他最相近的,小弟也有小弟...
该表示法在寻找父节点时:O(n) =n;子节点时:O(n) =1;兄弟节点时:O(n) =1。
1.3. 兄弟表示法
对于任意一个节点,他有儿子的话,那就只有一个大儿子,他有弟弟的话,就只有一个大弟弟。
这种方法将普通的树转化为一棵二叉树。
该表示法在寻找父节点时:O(n) =n ;子节点时:O(n) =1 ;兄弟节点时:O(n) =1。
上述三种方法都可以添加其他新指针域来减少时间复杂度。
二、二叉树(Binary Tree)
2.1. 定义
二叉树是有最多两个子树构成,并且严格区分左子树和右子树。
2.2. 特殊二叉树
斜树、满二叉树、完全二叉树。
2.3. 性质
2.3.1. 在二叉树的第i层上最多有2^(i-1)个节点(i >= 1)
2.3.2. 深度为k的二叉树最多有2^k -1 个节点(k >= 1)
2.3.3. 对于一颗二叉树,如果其叶子节点数为n,度为2的节点数为m,则n = m + 1(度:表示该节点子节点个数)
2.3.4. 略略略.
2.3.5. 存储结构
2.4. 线索二叉树
对于一个二叉树而言,必然会存在有些节点没有左子树或者右子树,而这些节点的数据结构中却仍然占据了存储空间,如何把这些闲置的存储空间利用起来就是线索二叉树所解决的问题。
线索二叉树将指向null的左子树指向该节点的前驱,指向null的右子树指向该节点的后继。
同时添加两个0 1 标志位,当标志位为0时,该节点指向其子树,否则指向其前驱或后继。
定义:指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表,相应的二叉树就为线索二叉树(Threaded Binary Tree)。
- 数据结构——树
- 数据结构——树
- 数据结构——树
- 数据结构——树
- 数据结构——树
- 数据结构——树
- 数据结构——树
- 数据结构——树
- 数据结构——树
- 数据结构——树
- 树——数据结构
- 数据结构——树
- 数据结构 —— 树
- 数据结构——树
- 数据结构——树
- trie树—数据结构
- 数据结构—树
- 数据结构—AVL树
- ORALCE数据迁移
- 使用solr为mysql构建全文搜索引擎
- QT 交叉编译环境搭建
- mysql sql语句大全
- log4j日志两种简单的使用方式
- 数据结构 —— 树
- 技术相关实践记录2
- 深入理解Java内部类
- coreseek/sphinx 索引配置文件说明
- CCNA第四天(路由器)
- 安卓在代码中设置TextView的drawableLeft、drawableRight、drawableTop、drawableBottom
- Java HashTable/HashMap/HashSet的区别
- ubuntu虚拟机安装opencv(宿主机为Win10)
- C++ map 容器