zoukankan      html  css  js  c++  java
  • 数据结构(十九)二叉树的定义和性质

      一、二叉树的定义

      1.二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两颗互不相交的、分别称为根结点的左子树和右子树的二叉树组成。

      2.二叉树的特点:

    • 每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点。
    • 左子树和右子树是有顺序的,次序不能任意颠倒。
    • 即使树中某结点只有一颗子树,也要区分它是左子树还是右子树。

      3.二叉树具有五种基本形态:

    • 空二叉树
    • 只有一个根结点
    • 根结点只有左子树
    • 根结点只有右子树
    • 根结点既有左子树又有右子树

      4.特殊二叉树

      (1)斜树:所有的结点都只有左子树的二叉树叫左斜树,所有结点都是只有右子树的二叉树叫右斜树。

      (2)满二叉树:所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上。

      (3)对一颗具有n个结点的二叉树按层序编号,如果编号为i(1<=i<=n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中的位置完全相同,则这棵二叉树称为完全二叉树。

      二、二叉树的性质(注意,这里的i都是从0开始的

      1.在二叉树的第i层上至多有2^i个结点(i从0开始)。

      2.深度为k的二叉树至多有2^k -1个结点(k从1开始)。

      3.对任何一颗二叉树T,如果其终端节点树为n0,度为2的结点数为n2,则n0 = n2 +1(设度为1的结点数为n1,则结点总数为n=n0+n1+n2;又由于除了根结点外,每一个结点均对应一个进入它的分支,所以分支总数=n-1,又由于度为1的结点对应着1个从它引出的分支,度为2的结点对应着2个从它引出的分支,所以分支总数=n1+2*n2,即n-1=n1+2*n2)。

      4.具有n个结点的完全二叉树的深度为【log2 n】+1(【x】表示不大于x的最大整数)(深度为k的满二叉树的结点数n一定是2^k -1)

      5.如果对一颗有n个结点的完全二叉树(其深度为【log2 n】+1)的结点按层序编号(从第1层到第【log2 n】+1层,每层从左到右),对任一结点i(0<=i<=n-1)有:

    • 如果i=0,则结点i是二叉树的根,无双亲;如果i>1,则其双亲是结点【(i-1)/2】
    • 如果2i+1>n,则结点i无左孩子;否则其左孩子是结点2i+1
    • 如果2i+2>n,则结点i无右孩子;否则其右孩子是结点2i+2
  • 相关阅读:
    OGG for sqlserver engryption && insert/delete
    MySQL中SQL_CALC_FOUND_ROWS的用法
    VMWARE 虚拟机新增硬盘,格式化分区,并挂载
    Mycat实战之数据迁移(oracle -- mysql)
    MYCAT实战之分片迁移
    mycat实战之性能测试
    Mycat实战之主键数据库自增方式
    对象的创建与克隆
    c#调用c++的dll,错误篇
    java 模拟消息的发送功能
  • 原文地址:https://www.cnblogs.com/BigJunOba/p/9209446.html
Copyright © 2011-2022 走看看