树和二叉树(知识整理)
1、树型结构是一类非常重要的非线性结构,
树型结构为:分支结构、一对多、层次结构
2、树(tree)是n(n>=0)个结点的有限集合T,若n=0时称为空树,否则:
(1)有且只有一个特殊的称为树的根(root)结点;根是入口
(2)若n>1时,其余的结点被分为m(m>0)个互不相交的子集T1,T2,T3..,其中每个子集本身又是一棵树,称其为根的子树
3、树的定义:树的递归定义,即用树来定义树,而只有一个结点的树必定仅由根组成(树只有一个根,根是树的入口)
4、树的组成元素:结点
结点(node):一个数据元素及其若干指向其子树的分支
结点的度(degree):结点所拥有的子树的棵数
树的度:树中结点度的最大值
叶子(终端)结点:树中度为0的结点
非叶子(非终端、分支)结点:度不为0的结点
分支结点又称内部结点
孩子结点:一个结点的子树的根称为该结点的孩子结点或子节点
双亲结点:该结点是其孩子结点的双亲结点或父节点
兄弟结点:同一双亲结点的所有子节点
堂兄弟结点:双亲结点在同一层上,且不是兄弟结点的所有结点
层次:规定树中根结点的层次为1,其余结点的层次等于其双亲结点的层次加1
若某结点在第i层,则其子节点在第i+1层
结点的层次路径:从根结点开始,到达某结点p所经过的所有结点称为结点p的层次路径(有且只有一条)
结点层次:从根开始定义起,根为第一层,跟的孩子为第二层,以此类推
p的祖先:结点p的层次路径上的所有结点(p除外)
结点的子孙结点:一某一结点为根的子树中的任意结点
树的深度:树中结点的最大层次值,又称树的高的)
森林:是m(m>=0)棵互不相交的树的集合。显然,若将一棵树的根结点删除,剩余的子树就构成了森林。
判断有序树和无序树:交换子树的顺序,是否是一个树
5、二叉树:是n(n>=0)个结点的有限集合。若n=0时称为空树,否则:
(1)有且只有一个根结点
(2)二叉树是有序的
(3)二叉树最多两个子树
6、二叉树的5种形态:空二叉树、单结点二叉树、左子树为空、右子树为空、左右子树都不空
7、二叉树性质:
1)在非空二叉树中,第i层上至多有2的i-1次幂个结点(i>=1)
2)深度为k的二叉树至多有2的k次幂-1个结点
3)对任何一棵二叉树,若其叶子结点数为n0,度为2的结点数为n2,则n0=n2+1
8、满二叉树:每层都是满的
对满二叉树连续编号:应层次从1开始,编号从1开始,“自上而下、自左而右”的原则进行
8、完全二叉树:与满二叉树对比
1)对应位置、对应编号
2)且不允许跳号
9、完全二叉树的性质:
1)第i层,至多有2的i-1次幂个结点
2)前k层,至多有(2的k次幂-1)个结点
3)n0=n2+1
4)深度为k,最多有(2的k次幂-1)个
5)深度为k,那么前(k-1)层必须是满的,前(k-1)层有(2的k-1次幂-1)个,第k层至少有一个
6)深度为k,所以叶子结点都出现在第k层或k-1层
7)如果右子树最大层为j,则其左子树最大层为j或j+1
8)n个结点的完全二叉树深度为:|log2n|+1
9)i结点的双亲为i/2,左子树为2i,右子树为2i+1
10、只有完全二叉树才使用顺序结构
树和二叉树(知识整理)相关推荐
- 树和二叉树知识要点(期末必考)
树和二叉树 什么是树? 树是由n(n>=0)个节点组成的有限集合(树中元素通常称为节点).n=0的树称为空树: 树形结构是非线性数据结构. 根:一个特殊的节点,它只有后继结点,没有前驱结点. 子 ...
- 《数据结构》树和二叉树代码整理(C语言实现)
目录 前言: 先序创建二叉树 二叉树遍历(前|中|后 序)--递归(核心代码) 二叉树遍历(前|中|后|层 序)--非递归(核心代码) 后序 双栈法 点这里有个C++ 版,方法很多,只会C的话应该能看 ...
- 计算机二级二叉树基础知识,2017年计算机二级公共基础知识学习教程:树与二叉树...
(六)树与二叉树 1.树的基本概念 树是一种简单的非线性结构.在树结构中,数据元素之间有着明显的层次结构.在树的图形表示中,用直线连接两端的结点,上端点为前件,下端点为后件. 在树结构中,每一个结点只 ...
- 【Python数据结构系列】☀️《树与二叉树-基础知识》——知识点讲解+代码实现☀️
文章目录 数据结构之树和二叉树 第一部分 树和二叉树的基础知识 1.树和二叉树的定义 1.1 树的定义 1.2 树的基本术语 1.3 二叉树的定义 2.二叉树的性质和存储结构 2.1 二叉树的性质 2 ...
- 数据结构:树与二叉树(一) 树的基本知识
这篇文章给大家简单讲一下树. 1.树逻辑结构 (1)树(Tree)是一个非空的有限元素的集合,元素之间有如下关系:有且仅有一个特殊元素,它没有前驱(称为树根Root),其余元素都有且仅有一个前驱元素, ...
- 计算机二级C语言公共基础知识,以及习题总结(二)树和二叉树
二级C语言公共基础知识,以及习题总结(一) 跳转 二级C语言公共基础知识,以及习题总结(二)树和二叉树 跳转 二级C语言公共基础知识,以及习题总结(三)查找和排序 跳转 二级C语言公共基础知识,以及习 ...
- excel 进行二叉树_软考 软件设计师考点整理:树与二叉树
[考法分析] 1.本知识点的主要考查形式有:对数与二叉树的一些概念和特性的描述,判断其正误:对于特殊的二叉树(平衡树.哈弗曼树.满二叉树.排序树等)定义.特性的描述判断正误.或根据题干描述构造特殊的二 ...
- 安卓高级面试知识整理
安卓高级面试知识整理 Android 四大组件:这是一份全面 & 详细的Activity学习指南 ...
- 清明自习-部分知识整理
清明自习-部分知识整理 遍历 所谓遍历(Traversal),是指沿着某条搜索路线,依次对树(或图)中每个节点均做一次访问.访问结点所做的操作依赖于具体的应用问题, 具体的访问操作可能是检查节点的 ...
- 2020小红书校招题目知识整理——哈夫曼编码
2020小红书校招题目知识整理--哈夫曼编码 哈夫曼编码 哈夫曼编码的目的就是数据压缩,加密解密,将出现频率低的放在二叉树的靠最下面的层,从而使频率高的能被更快的找到,实现数据压缩的功能 主要的编码过 ...
最新文章
- 数据结构:基数排序(Radix sort)
- 不仅仅是浏览器 走近Chrome开发人员工具
- [SPOJ DQUERY] D-query(树状数组,离线)
- Node.js Stream - 基础篇
- jquery form java_springmvc利用jquery.form插件异步上传文件示例
- docker中使用的镜像加速器可以自己生成
- 19. Django进阶:分页
- 手机输入法哪家好用?用户目前最喜爱这4款,有你正在使用的吗
- Unknown host ‘raw.githubusercontent.com‘. You may need to adjust the proxy settings in Gradle
- iptables中snat、dnat、masquerade
- STM32单片机编译器Keil环境配置教程
- Python 比较日期字符串与当前日期的日期差
- fread和 fgets的区别:
- yolov5 6.1官方模板TensorRT加速保姆级图文教程
- 修改浏览器User-Agent
- Go的宕机与宕机恢复
- 理解RabbitMQ中的AMQP模型,知乎上已获万赞
- Python之集合相关操作
- spring2.5.6整合hibernate3.3.2注解示例-第一节
- EasyExcel 使用和背景颜色样式(3.0以上的版本)
热门文章
- 爱情八十课,背叛也活该
- 2022 剑桥 AI 全景报告出炉:扩散模型是风口,中国论文数量为美国的 4.5 倍
- 如何在IDEA中配置启用npm命令
- 【保姆级】论文阅读与分析《Learning Heterogeneous Knowledge Base Embeddings for Explainable Recommendation》
- 逻辑谬误收集,以后辩论用
- Linux dmesg 命令 - 打印内核环形缓冲区
- SUMIF函数 countif函数
- 春节到了,程序员的对联页面是这样滴
- 使用merge into进行大数据量优化
- 用Python实现九九乘法表的几种方式,入门必备案例!超级简单!