zoukankan      html  css  js  c++  java
  • 数据结构(四)树---树的基础了解

    (一)树定义

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

    (二)结点分类

    首先介绍一下:

    结点的度:每个结点都有一个度,度表示他拥有的子树个数
    树的度:是所有结点的度的最大值

    叶结点/终端结点/叶子结点

    度为0的结点

    非终端结点/分支结点

    度不为0的结点

    内部结点

    除根结点之外的分支结点

    (三)结点之间的关系

    结点的子树的根称为该结点的孩子(扯淡呢:也就是说结点的下一个结点就是他的孩子)

    相反的,该结点称为孩子的双亲结点

    同一个双亲的孩子之间互称为兄弟

    结点的祖先:是从根到该结点所经分支上的所有结点

    以某结点为根的子树中的任一结点都被称为该结点的子孙

    (四)树的其他概念

    结点层次:从根开始定义起,根为第一层,根的孩子为第二层
    其双亲在同一层的结点互为堂兄弟
    树中结点的最大层次称为树的深度/高度

    (五)有序树和无序树

    若两者表示同一颗树,就叫无序树
    若两者表示2颗不同树,就叫做有序树

    (六)森林

    是m(m>=0)颗互不相交的树的集合
    对树中每个结点而言,其子树的集合即为森林

    (七)和线性表的比较

    线性表

    第一个数据元素:无前驱
    最后一个数据元素:无后继
    中间元素:一个前驱一个后继

    根结点:无双亲,唯一
    叶结点:无孩子,一棵树可以有多个叶结点
    中间结点:一个双亲,可以多个孩子

    (八)总结树的抽象数据类型

    ADT 树(tree)
    
    Data
        树是由一个根节点和若干棵子树构成。树中结点具有相同数据类型及层次关系
    
    Operation
        InitTree(*T):构造空树T
        DestroyTree(*T):销毁树T
        CreateTree(*T,definition):按照definition中给出树的定义来构造树
        ClearTree(*T):若树存在,则清空树
        TreeEmpty(T):若树为空,返回true,否则false
        TreeDepth(T):返回树的深度
        Root(T):返回T的根节点
        Value(T,cur_e):cur_e是树T中的一个结点,返回此结点的值
        Assign(T,cur_e,value):给树T的结点cur_e赋值为value
        Parent(T,cur_e):若cur_e是树的非根节点,则返回他的双亲,否则为空
        LeftChild(T,cur_e):若cur_e是树的非叶结点,则返回他的最左结点,否则返回空
        RightSibling(T,cur_e):若cur_e有右兄弟,则返回他的有兄弟,否则为空
        InsertChild(*T,*p,i,c):插入一个树C到树T中,插入位置为p所指向的结点的第i个子树。记得将该结点的度加1
        DeleteChild(*T,*p,i):删除树T中p所指向结点的第i棵子树
    endADT
  • 相关阅读:
    深港DJ好听的歌曲
    电调的相关知识
    CAD画图技巧经验
    第一期周二航拍视频分享 2017/07/10
    网站资料
    如何读懂零件图
    航拍技巧经验总汇
    乐迪AT9
    机器学习、数据挖掘、计算机视觉等领域经典书籍推荐
    Eclipse调试Java程序技巧
  • 原文地址:https://www.cnblogs.com/ssyfj/p/9459453.html
Copyright © 2011-2022 走看看