一.二叉树的定义


  二叉树(Binary Tree)是n(n>=0)个数据元素的有限集合,该集合可以为空(空二叉树),也可以由一个称为根(root)的元素及两个不相交的,被分别称为左子树和右子树的二叉树组成

  如上图中含有7个结点,其中A是根节点,左子树TL由{B,D,E}构成,右子树TR由{C,F,G}构成;而左子树TL中B是根结点,左子树是{D},右子树是{E};右子树TR中,C是根结点,左子树为空,右子树为{F,G};以此类推。
  由上述可以看出在二叉树中用到了递归的概念。即用二叉树来定义二叉树。


二叉树的特点:

 ①每个结点最多有两棵子树
 ②左子树和右子树是有顺序的,次序不能颠倒(若将其左右子树颠倒,就成为另外一颗不同的二叉树)

二叉树有五种基本形态:
 1.空树(0个结点)
 2.只有一个根结点
 3.根节点只有左子树
 4.根节点只有右子树
 5.根节点左右子树都有

二.二叉树的一些概念


1.结点
  :结点所拥有的子树个数称为该结点的度;二叉树中各结点度的最大值称为该二叉树的度;度为0的结点称为叶子结点,或者终端结点;度不为0的称为分支结点。一颗二叉树的结点除了叶子节点,其余的都是分支结点
  

2.结点的层数以及二叉树的深度
  结点层数:根结点的层数为1,其余结点的层数等于它的双亲结点加1
  深度:二叉树中叶结点的最大层数定义为二叉树的深度


3.特殊的二叉树
 ①满二叉树(所有的分支结点都存在左子树和右子树,并且所有的叶子结点都在同一层上)

 ②完全二叉树 (树中的结点从上到下,从左到右依次进行编号排序)

  满二叉树一定是完全二叉树,但是完全二叉树不一定是满二叉树



三.二叉树的性质(非常重要)


 1.一颗非空二叉树的第i层上最多有2^(i-1)个结点(i>=1)
 2.一颗深度为k的二叉树中,最多有2^k-1个结点
 3.对于一颗非空二叉树,如果叶结点数为n0,度数为2的结点数为n2,则有n0=n2+1
 4.具有n个结点的完全二叉树的深度为 |lbn|+1
 5.对于具有n个结点的完全二叉树,如果按照从上到下和从左到右的顺序对二叉树中所有结点从1开始编号,则对于任意序号结点来说,有:
  ①如果i>1,则序号i的结点的双亲结点序号为i/2;如果i=1,则此时结点为根结点,无双亲结点。
  ②如果2i<=n,则序号为i的结点的左孩子为2i;若2i>n,则序号为i的结点无左孩子
  ③如果2i+1<=n,则序号为i的结点的右孩子为2i+1;如果2i+1>n,则序号为i的结点无右孩子


四.二叉树的存储结构

  在数据结构中数据的物理存储结构可以分为两种,一种是顺序存储,一种是链式存储结构。所以二叉树的存储结构也有两种,即顺序存储和链式存储。


1.顺序存储结构
  用一组连续的存储单元存放二叉树中的结点。一般按照二叉树结点从上至下,从左到右的顺序存储。这样做可以最大可能的节省存储空间,又可以利用数组元素下标值确定结点在二叉树中的位置,以及结点之间的关系

  上述图中是一颗完全二叉树,顺序存储是比较适合完全二叉树的,但是对于一般的二叉树来说按照从上到下,从左到右依次来存储,只有先添加一些并不存在的空结点,使之成为一颗完全二叉树的形式,然后再用数组来存储,显然这样会造成大量的空间浪费,若是二叉树是一颗单支二叉树,空间的浪费更加严重。

2.链式存储结构

  用链表表示一颗二叉树,用链来指示元素的逻辑关系

  ①二叉链表存储
  对于一个任意的二叉树,每个结点最多有两个孩子,一个双亲结点,所以可以设计让每一个结点,至少包括三个域:数据域,左孩子域,右孩子域(其中数据域存放数据信息,lchild和rchild分别存放指向左孩子和右孩子的指针),当某个孩子不存在时,则域为空(用符号^或者NULL表示)

二叉链表表示:




  ②三叉链表存储
  每个结点由四个域组成:

  前面三个域和二叉链表的域意义相同,添加的parent域则用来存储指向该结点双亲结点的指针(既便于查找孩子结点,又便于查找双亲结点,缺点就是增加了空间的开销)

三叉链表表示:

  上述存储结构各有各的优缺点,所以在具体应用中,可以根据二叉树的形态和具体需求来决定二叉树的存储结构

二叉树的基本概念(定义,特性,存储结构等)相关推荐

  1. 数据结构:(翻转二叉树) 若二叉树采用二叉链表作存储结构,要交换其所有分支结点的左右子树的位置,采用()遍历方法最合适

    题目 若二叉树采用二叉链表作存储结构,要交换其所有分支结点的左右子树的位置,采用()遍历方法最合适?(北京航空航天大学1999,北京工业大学2016) A. 前序 B. 中序 C. 后序 D. 层次 ...

  2. 【数据结构】数据结构的基本概念——逻辑结构、存储结构、抽象数据类型

    文章目录 一.基本概念和术语? 1.数据 2.数据元素 3.数据项(属性.字段) 4.数据对象 5.数据结构 二.逻辑结构和物理结构(存储结构) 1.逻辑结构 1)定义 2)分类(线性结构和非线性结构 ...

  3. 数据结构基本概念——图的存储结构和遍历算法

    1图的存储方式 邻接矩阵和邻接表 1.邻接矩阵: 表示顶点之间相邻关系的矩阵. 设G=(V,E)是具有n个顶点的图,顶点序号依次为0,1,-,n-1,则表示G的邻接矩阵是具有如下定义的n阶方阵A: A ...

  4. 数据结构(十八)树的定义与存储结构

    一.树的定义 1.树(Tree)是n(n>=0)个结点的有限集.n=0时称为空树.在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点:(2)当n>1时,其余结点可分为m( ...

  5. 链表的特点,单链表的定义、存储结构,单链表的基本操作(判断链表是否为空、销毁链表、清空链表、求链表表长、查找、插入、删除,建立单链表)

    目录 一.链表(链式存储结构)的特点 二.单链表的定义和表示 1.带头结点的单链表 2.单链表的存储结构 三.单链表基本操作的实现 1.单链表的初始化(带头结点的单链表) 2.补充单链表的几个常用简单 ...

  6. 操作系统—数组的定义和存储结构

    建议将思维导图保存下来观看,或者点击这里在线观看

  7. 6.2 二叉树的定义、性质与存储结构

    0. 引子 1. 二叉树的定义 2. 二叉树的性质 3. 二叉树的存储结构 (1) 树的表示法 通常,像树.图.栈.队列等数据结构下数据的存储表示,都是基于线性表.线性表有两种结构:[顺序存储结构和链 ...

  8. 【数据结构】 实验报告10 顺序、链式存储结构的二叉树递归遍历、层次遍历求高度

    一.实验目的和要求 (源码在最后) 要求: 两种及以上存储结构(建议 顺序存储结构和链式存储结构各一).两种及以上方法(建议 递归遍历和层次遍历方法各一).分析各代码性能. 抽象数据类型(二叉树)独立 ...

  9. 二叉树的链式存储结构(线索二叉树)

    一.链式存储结构 由于顺序存储二叉树的空间利用率较低,因此二叉树一般都采用链式存储结构,用链表结点来存储二叉树中的每个结点.在二叉树中,结点结构通过包括若干数据域和若干指针域,二叉链表至少包含3个域: ...

  10. 数据结构之树和二叉树的基本概念,二叉树遍历算法的实现

    导语: 在之前的文章里,我们介绍了线性表,单链表,栈,队列等这些线性结构,我们知道线性结构中结点间具有唯一前驱,唯一后继关系,而非线性结构中结点间前驱,后继的关系并不具有唯一性,例如:在树中,结点间是 ...

最新文章

  1. ​清华来了第二位菲尔兹奖得主,是丘成桐力荐的老朋友Caucher Birkar
  2. java 正则提取$ 中内容_JAVA 使用正则从文字中提取想要的内容
  3. 【深度学习】模式识别技术探索之决策树(Decision tree)
  4. [转]Framework源码查看
  5. c#利用三层架构做一个简单的登录窗体
  6. LOJ #516. 「LibreOJ β Round #2」DP 一般看规律
  7. Jmeter(7)调试工具---HTTP Mirror Server
  8. Python学习系列:PyCharm CE 安装与测试
  9. 轻量级代码生成器-OnlyCoder 第一篇
  10. 20200720:每日一题之两数之和Ⅱ(leetcode167)
  11. 关于nagios监控系统添加主机和服务脚本
  12. MySQL之InnoDB存储引擎-架构
  13. 关于学计算机的职业理想700字,计算机专业职业规划范文
  14. 小米盒子服务器无信号,小米小盒子连接HDMI无信号怎么办?
  15. Android常用Qualifiers(限定符)
  16. 基于Matlab使用开普勒运动模型跟踪空间碎片(附源码)
  17. FdSanitizer 简介
  18. 《计算机科学与工程导论:基于IoT和机器人的可视化编程实践方法第2版》一2.1 工作流和可视化编程...
  19. CF赛后总结3:2021-07-22晚 HSSC21-22 div1+2 rating+219
  20. HTML5 APP开发环境的框架搭建

热门文章

  1. idea中git代码commit后,不想push了,要怎么还原
  2. 日语学习 特别篇 各种总结(家庭成员、数字、星期、月份、方位、都道府县等)
  3. 工作故事之三--崭露头角(从愣头青到感觉有点意思)
  4. 你了解移动分销平台吗?
  5. 朋友圈热荐:互联网老二逆袭的6大法宝
  6. 修改checkbox样式
  7. Pareto efficiency Pareto最优性 Pareto效率的感性理解
  8. 多多店铺基础优化经验分享
  9. php 文字水印去除毛边_如何去掉水印保留文字
  10. IDEA 自动生成serialVersionUID