
第6章 树型结构
发布日期:2021-05-09 05:36:55
浏览次数:11
分类:博客文章
本文共 1546 字,大约阅读时间需要 5 分钟。
第6章 树型结构
目录
数据结构与算法_师大完整教程目录(更有python、go、pytorch、tensorflow、爬虫、人工智能教学等着你):
一、树的基本概念
- 树:由 \(n(n>=0)\) 个结点构成的有限集合
- 根:有且仅有一个特定的结点
- 结点的度:结点拥有的子女数
- 树的度:所有结点度的最大值
- 度为 \(0\) 的结点:终端结点(叶子结点)
- 度不为 \(0\) 的结点:非终端结点(分支结点)
- 树枝:连接两个结点的线段
- 结点的层次:根结点为第 \(1\) 层,根的子女结点为第 \(2\) 层
- 树的高度:树中结点最大层次树
- 有序树:任意结点的子树看成是从左到右有次序,不能随意交换,否则为无序树
- 森林:\(m(m>=0)\) 棵互不相交的树构成的集合(在森林的每棵树之上加一个共同的根,森林则成了一棵树)
二、树类的定义
- 略
三、树的存储结构 (大概率不考)
- 树的三种常用存储结构:双亲表示法、孩子表示法、孩子兄弟表示法
3.1 双亲表示法
- 树的结点包含两个信息:结点的值 \(data\) 和体现结点之间相互关系的属性——该结点的双亲 \(parent\)
3.1.1 树的存储结构(双亲表示法)
#define MAXSIZE 100 // 树中结点个数的最大值typedef char datatype; // 结点值的类型// 结点的类型typedef struct node { datatype data; int parent; // 结点双亲的下标} node;// 树的类型typedef struct tree { node treelist[MAXSIZE]; // 存放结点的数组 int length, root; // 树中实际所含结点的个数及根节点的位置} tree;
3.2 孩子表示法
- 略
3.3 孩子兄弟表示法
- 略
四、树的遍历
前序遍历:首先访问根结点,再从左到右依次按前序遍历的方式访问根结点的每一棵子树
后序遍历:首先按后序遍历的方式访问根结点的每一棵子树,然后再访问根结点
层序遍历:首先访问第一层上的根结点,然后从左到右依次访问第二层上的所有结点,……,最后访问树中最低一层的所有结点。
图树的遍历:
树的遍历常用操作:
- 树的前续遍历的递归算法
- 树的后序遍历的递归算法
- 按前序遍历顺序建立一颗 \(3\) 度树
- 树的层次遍历算法
五、树的线性表示(大纲未规定)
- 注:仅凭借树的某种遍历序列有时无法唯一地确定一棵树,但只要在遍历序列的基础上加上一些附加信息,即可唯一地确定一棵树
5.1 树的括号表示
常用操作:
- 树的括号表示到树的孩子表示的转换算法
图树的括号表示:
5.2 树的层号表示
常用操作:
- 树的层号表示到树的扩充孩子表示的转换算法
图树的层号表示:
六、算法设计题
- 略
七、错题集
树最适合用来表示具有有序性和层次性的数据
在选择存储结构时,既要考虑数据值本身的存储,还需要考虑数据间关系的存储
(真题)对于一颗具有 \(n\) 个结点的树,该树中所有结点的度数之和为 \(n-1\)
已知一棵度为 \(m\) 的树中有 \(n_1\) 个度为 \(1\) 的结点, \(n_2\) 个度为 \(2\) 的结点,……,\(n_m\) 个度为
\(m\) 的结点,问该树中有多少个叶子结点?- 树中结点总数 \(n=n_0+n_1+n_2+…+n_m\)
- 树中结点的度数之和为 \(n-1\),且有:\(n-1=n_1+2*n_2+3*n_3+\cdots+m*n_m\) (用上题 \(3\) 的定理)
- 所以叶子结点个数为:\(n_0=1+n_2+2*n_3+\cdots+(m-1)*n_m\)
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月08日 13时57分15秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Spring security OAuth2.0认证授权学习第二天(基础概念-RBAC)
2021-05-09
ORA-00904: "FILED_TYPE": 标识符无效
2021-05-09
移动互联网恶意软件命名及分类
2021-05-09
PySide图形界面开发(一)
2021-05-09
vue3 template refs dom的引用、组件的引用、获取子组件的值
2021-05-09
882. Reachable Nodes In Subdivided Graph
2021-05-09
375. Guess Number Higher or Lower II
2021-05-09
764. Largest Plus Sign
2021-05-09
等和的分隔子集(DP)
2021-05-09
L - Large Division (大数, 同余)
2021-05-09
39. Combination Sum
2021-05-09
41. First Missing Positive
2021-05-09
80. Remove Duplicates from Sorted Array II
2021-05-09
83. Remove Duplicates from Sorted List
2021-05-09
410. Split Array Largest Sum
2021-05-09
程序员视角:鹿晗公布恋情是如何把微博搞炸的?
2021-05-09
系统编程-进程间通信-无名管道
2021-05-09
一个支持高网络吞吐量、基于机器性能评分的TCP负载均衡器gobalan
2021-05-09
HDOJ2017_字符串统计
2021-05-09
404 Note Found 团队会议纪要
2021-05-09