数据结构与算法 | 树与二叉树
- 树的概念
- 二叉树的概念
树的概念和结构
树是一种非线性的数据结构,它是由n个有限结点组成一个具有层次关系的集合,把它叫做树是因为它看起来像一棵倒挂的树,如图所示
- 有一个特殊的结点,称为根节点,根节点没有前驱结点
- 除根节点外,其余结点被分成M个互不相交的集合T1、T2、、、、、Tm, 其中每一个集合Ti又是一棵结构与树类似的子树。每棵子树的根节点有且只有一个前驱,可以有0个或多个后驱结点
- 子树是不相交的
- 除了根节点外,每个节点有且仅有一个父节点
- 一棵N个节点的树有N-1条边
6. 节点的度:一个节点含有的子树的个数称为该节点的度,如节点D的度为2
7. 叶子节点:度为零的结点为叶子节点,如上图所有#
8. 父节点:如果一个节点含有子节点,则称这个节点为父节点,如C是E和#的父节点
9. 子节点:如果一个结点含有的子树的根节点称为该节点的子节点,如A的子节点是B,C
10. 兄弟节点:具有相同的父节点的结点互称为兄弟节点,如B,C是兄弟节点
11. 树的度:树所包含的节点中,拥有最大的分支的数目为该树的度。上图是个二叉树度为2
12. 树的深度(高度):树中节点的最大层次
二叉树的概念和结构
二叉树是最常使用的树,特点是 :
- 每个节点最多有两棵子树,即二叉树不存在度大于2的节点
- 二叉树的子树有左右之分,其子树的次序不能颠倒
特殊的二叉树
满二叉树:
一个二叉树,如果每一层的节点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且节点总数为(2^k)-1,则就是满二叉树
完全二叉树:
满二叉树是一种特殊的完全二叉树,对于深度为k的,有n个节点的二叉树,当且仅当每一个节点都与深度为K的满二叉树中编号1~n的结点一一对应时称为完全二叉树
有一个很好的区分它们的方法,满二叉树是除叶子节点外所有节点都存在左右子树的一棵树,而完全二叉树则是所有节点都是连续的,不存在有右子树而没有左子树的情况
二叉树的性质
- 一棵非空二叉树上的第i层最多有2^(i - 1)个节点(层数从1开始)
- 深度为h的二叉树的最大节点数为2^n - 1个
- 如果叶子节点的个数为n0,度为2的结点的个数为n2,则有 n0 = n2 + 1
- 具有n个节点的完全二叉树的深度为h = log2(n) + 1
- 如果一个结点的编号为i(从0开始),那么他的左孩子编号为2i +1,右孩子编号为2i +2,他的父节点为(i - 1) / 2
数据结构与算法 | 树与二叉树相关推荐
- 数据结构与算法——树和二叉树***
第五章 :树和二叉树 树和图是两种重要的非线性结构.线性结构中结点具有唯一前驱和唯一后继的关系,而非线性结构中结点之间的关系不再具有这种唯一性.其中,树形结构中结点间的关系是前驱唯一而后继不唯一,即元 ...
- Python__数据结构与算法——树、二叉树(实现先、中、后序遍历)
目录 一.树 二.二叉树 树和前面所讲的表.堆栈和队列等这些线性数据结构不同,树不是线性的.在处理较多数据时,使用线性结构较慢,而使用树结构则可以提高处理速度.不过,相对于线性的表.堆栈和队列等线性数 ...
- 数据结构与算法——树与二叉树详细分享
一.树 1.定义:由n个有限节点组成一个具有层次关系的集合,看起来像一颗倒挂的树,特点: 2.特点: a.每个节点有0个或多个子节点 b.没有父节点的节点称为根节点(A) c.每一个非根节点有且只有一 ...
- 数据结构与算法:树 二叉树入门(一)
Tips: 采用java语言,关注博主,底部附有完整代码 工具:IDEA 本系列介绍的是数据结构: 树 这是第1篇目前计划一共有12篇: 二叉树入门 本篇 顺序二叉树 线索化二叉树 堆排序 赫夫曼树( ...
- 数据结构与算法--死磕二叉树
死磕二叉树 近一年都比较关注算法相关的知识,也刷了不少题,之前的文章中大多也是算法相关的文章,但是感觉每次遇到树相关的题型都不能应对自如,因此还是有必要在相关知识上下功夫,因此有此次总结,以下是所有树 ...
- 【数据结构Note5】- 树和二叉树(知识点超细大全-涵盖常见算法 排序二叉树 线索二叉树 平衡二叉树 哈夫曼树)
文章目录 5.1 树和二叉树引入 5.1.1 树的概念 5.1.2 树的表示 5.1.3 树中基本术语 5.2 二叉树 5.2.1 概念 5.2.2 二叉树的性质 5.2.3 特殊的二叉树 5.2.4 ...
- Java数据结构与算法——树(基本概念,很重要)
声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 有网友私信我,期待我的下一篇数据结构.非常荣幸文章被认可,也非常感谢你们的监督. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督 ...
- 数据结构与算法-- 广度优先打印二叉树
广度优先打印二叉树 题目:从上往下打印出二叉树的每一个节点,同一层节点按照从左到右顺序打印,例如下图中二叉树,依次打印出是8,6,10,5,7,9,11 如上题中二叉树的节点定义我们用之前文章 二叉树 ...
- 数据结构实验二 树和二叉树的实现
广州大学学生实验报告 开课实验室:计算机科学与工程实验(电子楼418A) 2019年5月13日 学院 计算机科学与教育软件学院 年级.专业.班 计算机科学与技术172班 姓名 学号 17061 ...
最新文章
- HDU5692(线段树+dfs序)
- 小米澄清传闻:不存在跨境转移利润及逃避缴纳税款行为
- Spring IOC 容器源码分析 - 获取单例 bean
- hdu 3033(分组背包)
- [分享]Host文件的原理解释及应用说明
- Log4J入门教程(二) 参数讲解
- servlet设置cookie实验
- ES6-weakset集合
- qq邮箱html模板_用了这么多简历模板,发现只有QQ邮箱自带的模板最好用
- L3-009 长城 (30 分)-PAT 团体程序设计天梯赛 GPLT
- Android系统启动-SystemServer下篇
- 专题一:MATLAB基础知识
- unity 视频播放器没有声音
- oracle重做日志详解,oracle数据文件、控制文件、重做日志文件详解
- 大促活动如何抵御大流量 DDoS 攻击?
- FX5U数据包功能码
- MYSQL基础之浅聊 变量
- GitHub 值得收藏的前端项目
- iphone11 sim卡故障_iPhone11.3更新后如何解决手机卡顿问题?
- 圆形头像 android,android 一个简单的实现圆形头像的Demo