博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树的基本概念
阅读量:4183 次
发布时间:2019-05-26

本文共 1029 字,大约阅读时间需要 3 分钟。

二叉树的概念

一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节

点加上两棵分别称为左子树和右子树的二叉树组成

特点:
  • 每个结点最多有两棵子树,即二叉树不存在度大于2的结点
  • 二叉树的子树有左右之分,其子树的次序不能颠倒

这里写图片描述

因此:二叉树是通过上述5中形式的组合或嵌套而形成

满二叉树&完全二叉树

  • 满二叉树:在一棵二叉树中,如果所有分支结点都存在左子树和右子树, 并且所有叶子节点都在同一层上
  • 完全二叉树:如果一棵具有N个结点的二叉树的结构与满二叉树的前N个 结点的结构相同,称为完全二叉树
    这里写图片描述

二叉树的性质

  • 若规定根节点的层数为1,则一棵非空二叉树的第i层上最多有2^(i-1)(i>0)个结点
  • 若规定只有根节点的二叉树的深度为1,则深度为K的二叉树的最大结点数是2^(k-1)(k>=0)
  • 对任何一棵二叉树, 如果其叶结点个数为 n0, 度为2的非叶结点个数 为 n2,则有n0=n2+1
  • 具有n个结点的完全二叉树的深度k为log2(n+1)上取整
  • 对于具有n个结点的完全二叉树,如果按照从上至下从左至右的顺序对所有节点从0开始编号,则对于序号为i的结点有:
    • 若 i > 0,双亲序号:(i-1)/2;i=0,i为根节点编号,无双亲结点
    • 若2i+1 < n,左孩子序号:2i+1,否则无左孩子
    • 若2i+2 < n,右孩子序号:2i+2,否则无右孩子

二叉树的存储结构

二叉树主要有顺序存储和链式存储结构

顺序存储结构:

对于一棵完全二叉树所有结点按照层序自顶向下,同一层自左向右顺 序编号,就得到一个节点的顺序序列

优点:存储完全二叉树,简单省空间

缺点:存储一般二叉树尤其单支树,存储空间利用不高

链式存储结构:

1.二叉链结构
这里写图片描述

typedef struct BinTreeNode{    struct BinTree* _left;//指向当前节点左孩子    struct BinTree* _right;//指向当前节点右孩子    DataType _data;//当前节点值域};

1.三叉链结构

这里写图片描述

typedef struct BinTreeNode{    struct BinTree* _parent;//指向当前节点双亲    struct BinTree* _left;//指向当前节点左孩子    struct BinTree* _right;//指向当前节点右孩子    DataType _data;//当前节点值域};
你可能感兴趣的文章
Pentaho BI开源报表系统
查看>>
Pentaho 开发: 在eclipse中构建Pentaho BI Server工程
查看>>
android中SharedPreferences的简单例子
查看>>
android中使用TextView来显示某个网址的内容,使用<ScrollView>来生成下拉列表框
查看>>
andorid里关于wifi的分析
查看>>
Hibernate和IBatis对比
查看>>
Spring MVC 教程,快速入门,深入分析
查看>>
Ubuntu Navicat for MySQL安装以及破解方案
查看>>
在C++中如何实现模板函数的外部调用
查看>>
HTML5学习之——HTML 5 应用程序缓存
查看>>
HTML5学习之——HTML 5 服务器发送事件
查看>>
SVG学习之——HTML 页面中的 SVG
查看>>
mysql中用命令行复制表结构的方法
查看>>
hbase shell出现ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException
查看>>
解决Rhythmbox乱码
查看>>
豆瓣爱问共享资料插件发布啦
查看>>
kermit的安装和配置
查看>>
linux中cat命令使用详解
查看>>
java中的异常机制
查看>>
商务智能-基本方法-数据钻取
查看>>