二叉树(一)

二叉树(一)

1.树

概念: 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合
特点:1.每个结点有零个或多个子结点;
   2.没有父结点的结点称为根结点;
   3.除根节点外,每一个结点有且只有一个父结点;
   4.除了根结点外,每个子结点可以分为多个不相交的子树 。
   5.如果树中有N个节点,一定有N-1条边

基础概念

  • 节点的度:即一个节点所用子树的个数
  • 树的度:一颗树中最大的节点的度
  • 叶子结点(终端节点):即节点的度为零的节点
  • 双亲节点(父节点):即一个节点拥有子节点,则称为该子节点的父节点
  • 孩子节点(子节点):即一个结点含有的子树的根结点称为该结点的子结点
  • 根节点:即一棵树中,没有父节点的节点
  • 节点的层次:从根节点开始时为第一层,其子节点为第二层,以此类推
  • 树的深度:树中节点的的最大层次

树的表示形式

  • 孩子表示法:既要保存值域同时保存孩子的地址
  • 双亲表示法:既要保存值域同时保存双亲的地址
  • 孩子双亲表示法:既要保存值域,同时保存孩子与双亲的地址
  • 孩子兄弟表示法:既要保存值域,同时保存第一个孩子与其下一个兄弟的地址

2.二叉树

概念:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉 树组成。
特点:1. 每个结点最多有两棵子树,即二叉树不存在度大于 2 的结点。
   2. 二叉树的子树有左右之分,其子树的次序不能颠倒。

两种特殊的二叉树

  • 满二叉树:一个二叉树中每层节点的个数达到最大值,则为满二叉树。(即如果 一个二叉树的层数为K,且结点总数是 ,则它就是满二叉树。 )
  • 完全二叉树:。对于深度为K的,有n 个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全 二叉树。
  • 两者关系:满二叉树是一棵特殊的完全二叉树,完全二叉树并不一定是一颗满二叉树

二叉树性质

  • 若规定根节点的层数为1,则一棵非空二叉树的第i层上最多有 (i>0)个结点

  • 若规定只有根节点的二叉树的深度为1,则深度为K的二叉树的最大结点数是 (k>=0)

  • 对任何一棵二叉树, 如果其叶结点个数为 n0, 度为2的非叶结点个数为 n2,则有n0=n2+1

  • 具有n个结点的完全二叉树的深度k为 上取整

  • 完全二叉树(不会出现只有右孩子,没有左孩子的情况):
      全部节点数为偶数,则有一个节点只有左孩子;
      全部节点为奇数,则有没有节点只有左孩子

  • . 对于具有n个结点的完全二叉树,如果按照从上至下从左至右的顺序对所有节点从0开始编号,则对于序号为i 的结点有:
      若i>0,双亲序号:(i-1)/2;i=0,i为根节点编号,无双亲节点
      若2i+1<n,左孩子序号:2i+1,否则无左孩子
      若2i+2<n,右孩子序号:2i+2,否则无右孩子

    二叉树的遍历

  • 前序遍历:访问根结点—>根的左子树—>根的右子树。

  • 中序遍历:根的左子树—>根节点—>根的右子树。

  • 后序遍历:根的左子树—>根的右子树—>根节点。

  • 层序遍历:从二叉树的根节点出发,首先访问第一层的树根节点,然后从 左到右访问第2层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值