二叉树的基本概念

二叉树的概念

一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节
点加上两棵分别称为左子树和右子树的二叉树组成

特点:
  • 每个结点最多有两棵子树,即二叉树不存在度大于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;//当前节点值域
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值