zoukankan      html  css  js  c++  java
  • 二叉树的基本理论知识

    树的特征

    树是一种数据结构,它是n(n>=0)个节点的有限集。n=0时称为空树。n>0时,有限集的元素构成一个具有层次感的数据结构。

    区别于线性表一对一的元素关系,树中的节点是一对多的关系。树具有以下特点:

    1. n>0时,根节点是唯一的,不可能存在多个根节点。
    2. 每个节点有零个至多个子节点;除了根节点外,每个节点有且仅有一个父节点。根节点没有父节点。

     树的相关概念

    树有许多相关的术语与概念,在学习树的结构之前,我们要熟悉这些概念:

    子树:除了根节点外,每个子节点都可以分为多个不相交的子树。(图二)

    孩子与双亲:若一个结点有子树,那么该结点称为子树根的"双亲",子树的根是该结点的"孩子"。在图一中,B、H是A的孩子,A是B、H的双亲。

    兄弟:具有相同双亲的节点互为兄弟,例如B与H互为兄弟。

    节点的度:一个节点拥有子树的数目。例如A的度为2,B的度为1,C的度为3.

    分支节点:除了叶子节点之外的节点,也即是度不为0的节点。

     

    两种特殊的二叉树

    斜树

    所有节点都只有左子树的二叉树叫做左斜树,所有节点都只有右子树的二叉树叫做右斜树。左斜树和右子树统称为斜树。
    斜树已经退化成线性结构,二叉树在查找上表现出来优异性能在斜树得不到体现。

    满二叉树

    满二叉树要满足两个条件:

    1. 所有的节点都同时具有左子树和右子树。
    2. 所有的叶子节点都在同一层上。

    在同样深度的二叉树中,满二叉树的节点数目是最多的,叶子数也是最多的。

     完全二叉树

    完全二叉树(Complete Binary Tree) :若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。

    二叉树的存储结构

    1. 二叉树的顺序存储

    ^代表不存在的结点。

    对于右斜树,顺序存储结构浪费存储空间

    2. 二叉链表

    链表每个结点包含一个数据域和两个指针域:

    其中data是数据域,lchild和rchild都是指针域,分别指向左孩子和右孩子。

  • 相关阅读:
    java移位运算符详解[转]
    Android四大基本组件介绍与生命周期
    oracle中怎么得到日期相减除去周末后的天数
    小计_合计_统计
    Oracle--SQL技巧之一(查询连续的记录)
    游戏中地图的制作(一)
    在别的地方看的<<给程序员介绍一些C++开源库>>,记录给大家共同学习
    C语言调用python代码
    XML文件中怎么写小于号 等特殊符号
    system->copy 和 ShellExecute 用法
  • 原文地址:https://www.cnblogs.com/sunbines/p/9074415.html
Copyright © 2011-2022 走看看