二叉树基本知识点图文介绍(全网最简洁)
一、二叉树相关理论
1.1定义
二叉树是指树中节点的度不超过二的有序树。一棵空树或者一个节点的树也可以称为二叉树,二叉树其左右子树也各种一棵二叉树。
1.2基本分类
有满二叉树和完全二叉树之分。
1.2.1满二叉树
是所有非叶子节点都有且仅存在左右子树的二叉树。
1.2.2完全二叉树
是除最后一层非叶子节点外都有且仅存在左右子树,且最后一层叶子节点从左到右紧密排列,右边连续缺少若干个节点的二叉树
1.3性质
性质1:二叉树第i层至多有(i>0)个节点
性质2:最大深度为h的二叉树至多有个节点
性质3:若任意一棵二叉树有n0个叶子节点,n1个度为2的节点,则必有n0 == n1 + 1
性质4:具有n个节点的完全二叉树最大深度为
性质5:对n个节点完全二叉树从上到下、左到右从1-i开始编号,假设根节点为1,父节点parent,左节点left ,右子节点right,则具有如下公式:
(1)父节点满足:
(2)子节点满足:
1.4二叉树遍历
二叉树在逻辑上虽然是非线性结构,但是在存储时可以用连续数组存储,也可以采用链表,本文讲解主要采用数组结构存储。当遍历二叉树时有四种方式,分别为前序遍历、中序遍历、后序遍历、层次遍历。
其中遍历的划分主要是根据父节点的访问顺序进行划分,下面是每种遍历方式示意图。
1.4.1前序遍历
如图三所示,是一个6个节点的完全二叉树,序号1-6节点对应的不重复关键字分别为ABCDEF,则先遍历的顺序为:先遍历父节点parent,然后遍历左子节点left,再遍历右子节点right,即遍历顺序:
parent ——> left ——> right
图三先序遍历输出结果为:A B D E C F
具体应用可以参考博主这篇博文:https://blog.csdn.net/naibozhuan3744/article/details/121708034
1.4.2中序遍历
中序遍历是先遍历左子节点left,在遍历父节点parent,最后遍历右子节点right,即遍历顺序:
left ——> parent ——> right
图三先序遍历输出结果为:D B E A F C
中序遍历一般应用在二叉搜索数上,二叉搜索树顺序输出是有序数组。
1.4.3后序遍历
后序遍历是先遍历左子节点left,在遍历右子节点right,最后遍历父节点parent,即遍历顺序:
left ——> right ——> parent
图三先序遍历输出结果为:D E B F C A
后序遍历一般用在运算符树,即非叶子节点为符号位,叶子结点是数字位,如图四所示:
通过对图四进行中序遍历可以还原表达式,进行后序遍历可以计算表达式。
1.4.4层次遍历
层次遍历顺序为从左到右、从上到下依次访问每个节点,可以采用队列方式进行遍历,顺序如下:
parent ——> left ——> right
图三先序遍历输出结果为:A B C D E F
层次遍历可以看成是顺序遍历整个存储二叉树的数组。
1.5二叉树的查找
二叉树查找元素有深度优先搜索(DFS)和广度优先搜索(BFS),深度优先搜索一般用递归方式;而广度优先搜索一般采用队列方式。
二叉树基本知识点图文介绍(全网最简洁)相关推荐
- Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍) 参考文章: (1)Mysql的Root密码忘记,查看或修改的解决方法(图文介绍) (2)https://www.cnblogs.com/ ...
- echarts配置项图文介绍——xAxis
echarts配置项图文介绍--xAxis 本文仅用于个人学习笔记,文中出现错误或不恰当请在评论区指出.本文仅介绍稍有难度的配置项,极其简单易懂的配置项请自行移步官网查阅文档. 一.用途 直角坐标系 ...
- 联想拯救者y7000p加内存条_怎么给笔记本升级内存和硬盘 联想Y7000P加装内存和硬盘图文介绍...
一般目前新买的笔记本电脑,大都是标配8GB内存和单块固态硬盘,内存和硬盘容量适中,但对于一些制图设计.偏大型游戏,又或者对硬盘存储要求比较高的用户来说,显然就不太够用,这时候我们一般会通过升级内存和硬 ...
- 图文介绍--光纤接口类型
图文介绍--光纤接口类型ST.SC.FC.LC ST.SC.FC光纤接头是早期不同企业开发形成的标准,使用效果一样,各有优缺点. ST.SC连接器接头常用于一般网络.ST头插入后旋转半周有一卡口固定, ...
- 注销苹果id 显示联系服务器时出现问题,帮您还原连接appleid服务器时出错
【图文介绍】的处理办法_...
近日有小伙伴发现电脑出现问题了,在突然遇到连接appleid服务器时出错 时不知所措了,对于连接appleid服务器时出错 带来的问题,其实很好解决连接appleid服务器时出错 带来的问题,下面小编 ...
- 软件开发知识点基础介绍
软件开发知识点基础介绍 软件:即一系列按照特定顺序组织的计算机数据和指令的集合,有系统软件和应用软件之分. 系统软件:windows,mac,linux,unix,android,ios- 应用软件: ...
- VM虚拟机安装篇·VMware Workstation Pro(虚拟机)安装Win10操作系统(图文介绍超详细)
VMware Workstation Pro(虚拟机)安装Win10操作系统(图文介绍适合小白) 文章目录 VMware Workstation Pro(虚拟机)安装Win10操作系统(图文介绍适合小 ...
- 无限法则服务器角色操作忙,无限法则海岛地图决赛圈打药及火山灰伤害测试图文介绍[多图]...
<无限法则>中海岛图玩家在好不容易来到决赛圈的时候,可能会遇到火山灰.这个时候大家会手忙脚乱,药包不够怎么办?火山灰毒性毒死我怎么办?今天小编就为大家带来无限法则海岛地图决赛圈打药及火山灰 ...
- php 导出mysql 数据库表结构图_导入和导出数据表的图文介绍(phpMyAdmin的使用教程5)...
导入和导出数据表的图文介绍(phpMyAdmin的使用教程5) 导入和导出数据是互逆的两个操作,导入数据是通过扩展名为.sql的文件导入到数据库中,导出数据是将数据表结构,表记录储存为.sql的文件, ...
最新文章
- placeholder的样式设置
- Linux下执行.sh命令出现-bash: ./bin/start.sh: /bin/bash^M: bad interpreter: No such file or directory...
- CentOS7安装和配置samba
- ACL 2020 | 消除文本分类问题中歧视现象的研究
- 引用管理器没有程序集_如何使用Zotero插入引用文献
- springcloud微服务实战--笔记--1、基础知识
- Javascript之创建对象(原型模式)
- CSS3中的border-radius兼容IE低版本解决方法
- 推荐一个不错的plist拆解工具,untp
- 阶段3 1.Mybatis_04.自定义Mybatis框架基于注解开发_2 回顾自定义mybatis的流程分析...
- Java过滤器和拦截器的区别
- 教育部要求“强保障、上水平”,课后服务该如何提质增效?
- JavaWeb 之 Listener监听器及Session的钝化与活化
- 计算机通信中ip,macid的主要作用和区别
- POJ3069-Saruman's Army-贪心水题
- 产品经理如何来优化CSDN手机短信验证的功能
- 从5G+AI到ChatGPT火爆全网,且有望带来5G消息的业务重构!
- oops和panic的区别
- pandas中计算分位数的方法describe,quantile,以及sql中计算分位数的方法percentile_approx,percent_rank() over()
- cybersource支付对接
热门文章
- 智联招聘如何设置公司屏蔽
- Redis 处理接口幂等性的两种方案
- 华二紫竹2021年高考成绩查询,2019年华二紫竹升学数据分析!
- 结合stata和pyecharts对双11淘宝销量数据分析(进度5%,咯咯咯 我鸽了)
- QGraphicsView图形视图框架使用(六)图元动画
- 大数据技术大致包含哪些内容
- 埃斯顿机器人 王杰高_产教融合进行时——南京埃斯顿集团王杰高博士一行来我校开展合作交流...
- 一文集齐几大硬核Linux技术公众号,不是精品不推荐
- macOS系统低版本升级问题处理纪录
- Pj Immediate Decodability