zoukankan      html  css  js  c++  java
  • 二叉树:基本术语和重要性质

    一、树的基本术语:

    子树的概念:树是n(n≥0)个节点的有限集合。任意一颗非空树中:(1)有且仅有一个特定的称为根(root)的节点;(2)当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,...,Tm,其中每个集合本身又是一棵树,并且称其为根的子树

    树的结点包含一个数据元素及若干指向其子树的分支。

    结点拥有的子树数称为结点的度(Degree)。度为0的结点称为叶子(Leaf)。度不为0的结点称为分支结点。除了根节点之外,分支结点也称为内部结点

    树的度是树内各结点的度的最大值。节点的层次(Level)是从根开始定义起,根为第一层,根的孩子为第二层,若某节点在第L层,则其子树的根就在第L+1层。树中节点的最大层次称为树的深度(Depth)或高度。

    若果将树中节点的各子树看成从左至右是有次序的(即不能互换),则称为该树是有序树,否则称为无序树

    森林(Forest)是m(m≥0)颗互不相交的树的集合

    二、二叉树的重要性质:

    清华大学《数据结构(C语言版)》一书中对二叉树的解释很明确:

    二叉树(Binary Tree)是一种树形结构,特点是每个节点至多只有两颗子树(二叉树中不存在度大于2的节点),并且二叉树的子树有左右之分,其次序不能够任意颠倒。

    性质1:在二叉树的第i层上至多有2(i-1)个结点(i≥1);

    如:第1层最多只有一个结点,第2层最多只有2个结点,第3层最多只有4个结点。

    性质2:深度为k的二叉树至多有2k-1个结点(k≥1);

    性质3:对任何一颗二叉树T,如果其终端结点数为n0,度为2的结点个数为n2,则有n0=n2+1。

    一颗深度为k且有2k-1个结点的二叉树称为满二叉树

    可以给满二叉树进行编号,约定编号从根结点起,从上而下,从左至右。由此可以引出完全二叉树的概念。

    深度为k的,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称为完全二叉树

    完全二叉树在很多场合下都有应用,下面是完全二叉树的两个重要性质

    性质4:具有n个节点的完全二叉树的深度为[log2n]+1(注:[x]表示不大于x的最大整数,如[2.2]=2)。

    性质5:如果对一颗有n个结点的完全二叉树(其深度为[log2n]+1)的结点按层序编号(从第1层到第[log2n]+1层,每层从左到右),则对任一结点i(1≤i≤n),有:

    ① 如果i=1,则结点i是二叉树的根,无双亲;如果i≥1,则其双亲PARENT(i)是节点[i/2] 。

    ② 如果2i>n,则结点i无左孩子(节点i为叶子节点);否则其左孩子LCHILD(i)是节点2i 。

    ③ 如果2i+1>n,则结点i无右孩子;否则其右孩子RCHILD(i)是结点2i+1 。

  • 相关阅读:
    事务隔离级别,数据库存储过程,Mysql视图,Mysql语句
    Spring注解; Spring Bean
    Java Thread Api
    Java 年轻代、年老代、GC
    Java 线程同步方式
    HashMap
    ArrayList
    安装zabbix环境
    线上应用——高内存占用
    Python入门笔记
  • 原文地址:https://www.cnblogs.com/lj95801/p/5242742.html
Copyright © 2011-2022 走看看