一、二叉树相关理论

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二叉树遍历

二叉树在逻辑上虽然是非线性结构,但是在存储时可以用连续数组存储,也可以采用链表,本文讲解主要采用数组结构存储。当遍历二叉树时有四种方式,分别为前序遍历、中序遍历、后序遍历、层次遍历。

其中遍历的划分主要是根据父节点的访问顺序进行划分,下面是每种遍历方式示意图。

图三  一棵6节点的完全二叉树

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),深度优先搜索一般用递归方式;而广度优先搜索一般采用队列方式。

二叉树基本知识点图文介绍(全网最简洁)相关推荐

  1. Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)

    Mysql的Root密码忘记,查看或修改的解决方法(图文介绍) 参考文章: (1)Mysql的Root密码忘记,查看或修改的解决方法(图文介绍) (2)https://www.cnblogs.com/ ...

  2. echarts配置项图文介绍——xAxis

    echarts配置项图文介绍--xAxis 本文仅用于个人学习笔记,文中出现错误或不恰当请在评论区指出.本文仅介绍稍有难度的配置项,极其简单易懂的配置项请自行移步官网查阅文档. 一.用途 直角坐标系 ...

  3. 联想拯救者y7000p加内存条_怎么给笔记本升级内存和硬盘 联想Y7000P加装内存和硬盘图文介绍...

    一般目前新买的笔记本电脑,大都是标配8GB内存和单块固态硬盘,内存和硬盘容量适中,但对于一些制图设计.偏大型游戏,又或者对硬盘存储要求比较高的用户来说,显然就不太够用,这时候我们一般会通过升级内存和硬 ...

  4. 图文介绍--光纤接口类型

    图文介绍--光纤接口类型ST.SC.FC.LC ST.SC.FC光纤接头是早期不同企业开发形成的标准,使用效果一样,各有优缺点. ST.SC连接器接头常用于一般网络.ST头插入后旋转半周有一卡口固定, ...

  5. 注销苹果id 显示联系服务器时出现问题,帮您还原连接appleid服务器时出错 【图文介绍】的处理办法_...

    近日有小伙伴发现电脑出现问题了,在突然遇到连接appleid服务器时出错 时不知所措了,对于连接appleid服务器时出错 带来的问题,其实很好解决连接appleid服务器时出错 带来的问题,下面小编 ...

  6. 软件开发知识点基础介绍

    软件开发知识点基础介绍 软件:即一系列按照特定顺序组织的计算机数据和指令的集合,有系统软件和应用软件之分. 系统软件:windows,mac,linux,unix,android,ios- 应用软件: ...

  7. VM虚拟机安装篇·VMware Workstation Pro(虚拟机)安装Win10操作系统(图文介绍超详细)

    VMware Workstation Pro(虚拟机)安装Win10操作系统(图文介绍适合小白) 文章目录 VMware Workstation Pro(虚拟机)安装Win10操作系统(图文介绍适合小 ...

  8. 无限法则服务器角色操作忙,无限法则海岛地图决赛圈打药及火山灰伤害测试图文介绍[多图]...

    <无限法则>中海岛图玩家在好不容易来到决赛圈的时候,可能会遇到火山灰.这个时候大家会手忙脚乱,药包不够怎么办?火山灰毒性毒死我怎么办?今天小编就为大家带来无限法则海岛地图决赛圈打药及火山灰 ...

  9. php 导出mysql 数据库表结构图_导入和导出数据表的图文介绍(phpMyAdmin的使用教程5)...

    导入和导出数据表的图文介绍(phpMyAdmin的使用教程5) 导入和导出数据是互逆的两个操作,导入数据是通过扩展名为.sql的文件导入到数据库中,导出数据是将数据表结构,表记录储存为.sql的文件, ...

最新文章

  1. placeholder的样式设置
  2. Linux下执行.sh命令出现-bash: ./bin/start.sh: /bin/bash^M: bad interpreter: No such file or directory...
  3. CentOS7安装和配置samba
  4. ACL 2020 | 消除文本分类问题中歧视现象的研究
  5. 引用管理器没有程序集_如何使用Zotero插入引用文献
  6. springcloud微服务实战--笔记--1、基础知识
  7. Javascript之创建对象(原型模式)
  8. CSS3中的border-radius兼容IE低版本解决方法
  9. 推荐一个不错的plist拆解工具,untp
  10. 阶段3 1.Mybatis_04.自定义Mybatis框架基于注解开发_2 回顾自定义mybatis的流程分析...
  11. Java过滤器和拦截器的区别
  12. 教育部要求“强保障、上水平”,课后服务该如何提质增效?
  13. JavaWeb 之 Listener监听器及Session的钝化与活化
  14. 计算机通信中ip,macid的主要作用和区别
  15. POJ3069-Saruman's Army-贪心水题
  16. 产品经理如何来优化CSDN手机短信验证的功能
  17. 从5G+AI到ChatGPT火爆全网,且有望带来5G消息的业务重构!
  18. oops和panic的区别
  19. pandas中计算分位数的方法describe,quantile,以及sql中计算分位数的方法percentile_approx,percent_rank() over()
  20. cybersource支付对接

热门文章

  1. 智联招聘如何设置公司屏蔽
  2. Redis 处理接口幂等性的两种方案
  3. 华二紫竹2021年高考成绩查询,2019年华二紫竹升学数据分析!
  4. 结合stata和pyecharts对双11淘宝销量数据分析(进度5%,咯咯咯 我鸽了)
  5. QGraphicsView图形视图框架使用(六)图元动画
  6. 大数据技术大致包含哪些内容
  7. 埃斯顿机器人 王杰高_产教融合进行时——南京埃斯顿集团王杰高博士一行来我校开展合作交流...
  8. 一文集齐几大硬核Linux技术公众号,不是精品不推荐
  9. macOS系统低版本升级问题处理纪录
  10. Pj Immediate Decodability