1.在说二叉树之前先说下什么是树?

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成的一个具有层次关系的集合。像一棵倒挂的树,它的根是朝上的,而叶子是朝下的。它的特点:每个根结点有零个或多个子结点,没有父结点的结点成为根结点,每个非根结点有且只有一个父结点!每个子结点可以分为多个不相交的子树。子树是不相交的!

节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
树的度:一棵树中,最大的节点的度称为树的度;
节点的度:一个节点含有的子树的个数称为该节点的度;
树的高度或深度:树中节点的最大层次;

2.二叉树

二叉树就是一种特殊的树,每个结点最多有两棵子树,即二叉树不存在度大于2的结点,二叉树的子树有左右之分,其子树的次序不能颠倒。下图所示:

特殊的三种二叉树:
1.满二叉树:每一层的结点数达到最大值,也就是说一个二叉树的层数为k,则结点总数就是2^k-1,如下图所示:

2.完全二叉树
完全二叉树也就是说除最后一层外,其他每一层结点数都达到最大值,如下图所示:

3.平衡二叉树
平衡二叉树就是根节点的左右子树的高度差的绝对值<=1,而且左右子树又都分别是平衡二叉树。

二叉树更多的会用到递归的思想,因为有时用递归解决问题会比较简单,二叉树的建立就是一个递归的过程,最上方的根节点开始分别建立左右结点,然后又以左右结点为根节点建立左右结点,这样下去就是一棵二叉树。

数据结构之二叉树介绍相关推荐

  1. 数据结构之二叉树基本介绍

    数据结构之二叉树基本介绍 说明:总是会忘记二叉树的相关概念在这里记录一下 二叉树:每个节点最多有两个子树的树结构. 根节点:一棵树最上面的节点称为根节点. 父节点.子节点:如果一个节点下面连接多个节点 ...

  2. 【数据结构】二叉树及其相关操作

    二叉树的定义 二叉树是一个由结点构成的有限集合,这个集合或者为空,或者由一个根节点及两棵互不相交的分别称作这个根节点的左子树和右子树的二叉树组成. 二叉树并非一般的树形结构的特殊形式,它们是两种不同的 ...

  3. 数据结构之二叉树(遍历、建立、深度)

    数据结构之二叉树(遍历.建立.深度) 1.二叉树的深度遍历 二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树的所有结点,使得每个结点被访问一次且仅被访问一次. 对于二叉树的深度遍历,有前序遍历 ...

  4. 数据结构之二叉树:折纸问题——11

    数据结构之二叉树:Python代码解决折纸问题 折纸问题 要求:请把一段纸条竖着放在桌子上,然后从纸条的下边向上方对折1次,压出折痕后展开.此时折痕是凹下去的,即折痕突起的方向指向纸条的背面.如果从纸 ...

  5. 【c语言数据结构】二叉树

    c语言数据结构完全二叉树 快速开始 直接参考示例代码即可 介绍 概念 二叉树(Binary tree)是树形结构的一个重要类型. 许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单 ...

  6. 初阶数据结构 初识二叉树

    初阶数据结构 初识二叉树 一. 树 1. 基本概念 2. 常用术语 3. 代码表示 4. 实际运用 二. 二叉树 1. 基本概念 2. 特殊的二叉树 3. .二叉树的顺序结构及实现 (1)顺序结构 ( ...

  7. 二叉树介绍 ~ 概念、存储结构、性质

    二叉树介绍 ~ 概念.存储结构.性质 1.二叉树的概念 2.特殊二叉树 3.二叉树的存储结构 4.二叉树的性质 5.相关案例 1.二叉树的概念 一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由 ...

  8. 二叉树介绍与详解(一)

    二叉树是一个高级数据结构,它的特点是既可以像索引一样快速查找,又可以像链表一样快速插入.是一个智慧结晶啊,那么接下来就要全面介绍一下二叉树. 一.二叉树含义 二叉树是一种简单的树结构,每一个父节点下最 ...

  9. 数据结构的简要介绍:图形如何工作

    by Michael Olorunnisola 通过Michael Olorunnisola 数据结构的简要介绍:图形如何工作 (A Gentle Introduction to Data Struc ...

最新文章

  1. 中国有神经网络计算机,新神经网络使计算机像人一样推理
  2. java Executor实例_Executor框架+实例
  3. php strtotime 和 date 日期操作
  4. wget ip_10分钟搭建个人开源博客+域名ip解析
  5. Java常见的系统路径与获取方法
  6. css 浏览器调试中不可见_前端入门必会的初级调试技巧
  7. 高德地图调用和添加标注
  8. C语言中输入123求位权,数反转 - it610.com
  9. python end of statement_17个新手常见Python运行时错误
  10. cacti 升级php,Cacti 升级备忘
  11. VSCode每打开一次文件弹出一个git弹窗:-login -i rev-parse --show-toplevel
  12. MySQL多线程并发调优
  13. 大数据分析常见的9个错误
  14. C++之epoll监听输入(替代select)
  15. oracle怎么查找数据泵,ORACLE数据泵使用详解
  16. VS2013/VS2017 Visual Assist X安装及破解
  17. ReactNative配合node.js实现的公司通讯录管理app
  18. DevExpress的双击获取单元格数据
  19. PyCharm2017破解教程
  20. 常见html5营销类型有哪些,常见的品牌营销都有哪几种形式

热门文章

  1. node怎么样安装npm
  2. html画倒金字塔直线,HTML5/Canvas 生成金字塔动画
  3. java 可以javac不是内部或外部命令
  4. 如何识别浏览器版本,以及对ieX浏览器以下进行控制
  5. 阿里云服务器配置管理
  6. 网游服务器中的GUID(唯一标识码)实现-基于snowflake算法
  7. java7夕_程序员的七夕节……
  8. 根据CAD文件的坐标信息给矢量图设置正确的投影坐标
  9. python中怎么画一个机器猫_Python turtle模块实战:绘制机器猫的主体
  10. 游戏陪玩平台源码开发,语音通话中的噪音消除处理