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都是指针域,分别指向左孩子和右孩子。

  • 相关阅读:
    ASP记录(一)
    ASP HTML JS CSS JQ之间恩怨
    ASP记录(二)之Input
    网页范例
    初识GoAhead
    TCP、IP、Http、Socket、telnet
    自定义博客的背景图片
    工具管理操作类介绍
    STL string的构造函数
    cout 格式化输出
  • 原文地址:https://www.cnblogs.com/sunbines/p/9074415.html
Copyright © 2011-2022 走看看