zoukankan      html  css  js  c++  java
  • 数据结构与算法学习(四):树

    一、树的定义

    树是由根结点和若干颗子树构成的。树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系称为父子关系。父子关系在树的结点之间建立了一个层次结构。在这种层次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点,或称为树根。

    相关术语

    节点的度:一个节点含有的子树的个数称为该节点的度;
    叶节点或终端节点:度为0的节点称为叶节点;
    非终端节点或分支节点:度不为0的节点;
    双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;
    孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;
    兄弟节点:具有相同父节点的节点互称为兄弟节点;
    树的度:一棵树中,最大的节点的度称为树的度;
    节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
    树的高度或深度:树中节点的最大层次;
    堂兄弟节点:双亲在同一层的节点互为堂兄弟;
    节点的祖先:从根到该节点所经分支上的所有节点;
    子孙:以某节点为根的子树中任一节点都称为该节点的子孙。
    森林:由m(m>=0)棵互不相交的树的集合称为森林;
     
    二、树的结构
     
    1.双亲表示法
    由于树中的每个结点都有唯一的一个双亲结点,所以可用一组连续的存储空间(一维数组)存储树中的各个结点,数组中的一个元素表示树中的一个结点,每个结点含两个域,数据域存放结点本身信息,双亲域指示本结点的双亲结点在数组中位置。
     
     

    2.孩子兄弟表示法

    孩子兄弟表示法的每个节点有两个指针域,一个指向其长子,另一个指向其兄弟.

    用孩子兄弟表示法可以表示为:

    二叉树

    1.二叉树的概念和性质

    二叉树的定义:二叉树是一种最简单的树形结构,树中每个节点至多关联到两个后继点,且一个结点关联的后继结点明确的分左右。

    满二叉树:如果二叉树中所有分支结点的度数都是2,则称它为一棵满二叉树

    扩充二叉树:对于二叉树T,加入足够多的新叶结点,使T的原有结点都变为度数为2的分支结点,得到的二叉树T为扩充二叉树

    完全二叉树:一棵二叉树至多只有最下面的一层上的结点的度数可以小于2,并且最下层上的结点都集中在该层最左边的若干位置上,而在最后一层上,右边的若干结点缺失的二叉树,则此二叉树成为完全二叉

    2.二叉树的遍历

    深度优先遍历:顺着一条路尽可能向前探索,必要时回溯;

    广度优先遍历:在所有路径上齐头并进

  • 相关阅读:
    java分解质因数
    GUID全局唯一标识符
    Oracle-教师信息表(Teacher)
    Oracle-成绩表(Score)
    Oracle-建表course
    Oracle-建表student
    输入输出-复制
    Map
    哈希
    链表
  • 原文地址:https://www.cnblogs.com/wangxiayun/p/8515460.html
Copyright © 2011-2022 走看看