数据结构:树

一、树

1、树的定义

由n个结点构成的集合,n=0称为空树,n=1的树只有一个结点,对于n>1的树T有:

  • 最顶端的结点称为根节点,根结点无前驱结点
  • 除根结点,其余结点被分为m个不相交的集合,每个集合又是结构与树类似的子树
常用术语:
  • 结点的度:结点所拥有的子树(或者孩子结点)的个数
  • 叶结点:度为0(无子树)
  • 树的度:所有结点的度的最大值
  • 分支结点:度不为0的结点称为分支结点
  • 孩子结点:树中一个结点的子树的根结点
  • 双亲结点:孩子结点的前驱结点
  • 兄弟结点:具有相同双亲结点的结点
  • 结点的层次:根结点的层次规定为0,则其它结点的层次是其双亲结点层次+1
  • 树的深度:结点层次的最大值,层次为0的树只有一个根节点
  • 树的高度:树的深度+1
  • 有序树:从左到右的兄弟结点存在次序不能互换
  • 森林:树的集合

2、树的常见性质

① 结点数=结点总度数+1

结点的度代表该结点有几个孩子,根节点没有算入,所以+1

② 度为m的数:代表其中一个结点的度最大值是m

m叉树:代表结点的度最大为m

③ 度为m的树第i层至多有mi个结点(根节点为第0层)

④ 高度为h的m叉树至多有[mh-1]/[m-1]个结点

  • 深度为k的m叉树至多有[mk+1-1]/[m-1]个结点

⑤ 具有m个结点的m叉树的最小高度为[logm(n(m-1)+1)]

3、树的抽象数据类型

① 数据集合

树的结点集合,每个结点由数据元素和构造数据元素之间关系的指针组成

② 操作集合
Initiate(T);//初始化
Parent(T,curr);//返回双亲结点或NULL
LeftChild(T,curr);//返回左兄弟结点
RightChild(T,curr);//返回右兄弟结点
Traverse(T,Visit());//前中后序遍历
DestroyTree(T);//撤销树

4、树的存储结构

① 双亲表示法
  • 顺序存储
  • 一个结点存储两个内容,data和parent
② 双亲孩子表示法
  • 顺序+链式
  • 顺序存放结点即data,链式存放第一个孩子firstChild
③ 孩子兄弟表示法
  • 链式
  • 类似链式存储二叉树
  • 每个结点的后继结点,一个是第一个孩子,一个是兄弟结点

5、树、森林和二叉树转换

① 森林

C语言《数据结构》(朱战立):树相关推荐

  1. 数据结构c语言版朱战立报告,数据结构(C语言版)

    本书是Sedgewick彻底修订和重写的C算法系列的第一本.全书分为四部分,共16章.第一部分"基础知识"(第1-2章)介绍基本算法分析原理.第二部分"数据结构" ...

  2. 数据结构java语言描述朱战立_数据结构——树(Java语言描述)

    树根:rootNode. 树只有一个树根. 节点:Node. 树上的所有节点. 子节点数组:Node[]. 数组代表每个节点的所有子节点 父节点:parentNode. 每个节点只有一个父节点. 2. ...

  3. 数据结构-使用c语言 朱战立 pdf,数据结构-使用C语言朱战立.ppt

    教材:教材: 朱战立编著,数据结构朱战立编著,数据结构----使用使用 C C语言(第语言(第3 3版),西安交通大版),西安交通大 学出版社,学出版社,20032003年年 数数 据据 结结 构构 ...

  4. 数据结构使用c语言朱战立答案,数据结构使用C语言朱战立第2章课件

    数据结构使用C语言朱战立第2章课件 前牙反颌和开颌的原因多由于不良喂养方式和吮指等不良习惯造成,也可因多颗乳磨牙过早缺失,迫使儿童用前牙咀嚼,下颌逐渐前伸移位造成. typedef struct No ...

  5. 用c语言线性表的链式表示实现,数据结构-使用C语言 朱战立第2章线性表的链式表示.ppt...

    数据结构-使用C语言 朱战立第2章线性表的链式表示 * 循环链表(circular linked list) 循环链表是表中最后一个结点的指针指向头结点,使链表构成环状 特点:从表中任一结点出发均可找 ...

  6. C语言《数据结构》(朱战立):图

    C语言数据结构:图 一.图的基本概念 1.图的定义 G=(V,E) V{x|x∈某个数据元素集合}:表示顶点 E{(x,y)|x,y∈V}:表示路径,若指定Path(x,y),说明x到y是一条单向通路 ...

  7. 数据结构java朱战立pdf_数据结构使用C语言 朱战立,刘天时编著.pdf

    第 章 绪 论 计算机是对各种各样数据进行处理的机器 .在计算机 中如何组织数据 ,如何处理数据 ,从 而如何更好地利用数据是计算机科学的基本研究 内容 .掌握数据在计算机 中的各种组织和处 理方法是 ...

  8. C语言数据结构:什么是树?什么是二叉树?

    点击蓝字 关注我们 前言 在之前的数据结构学习中,我们学习了顺序表.链表.栈.队列这几种结构 它们都是用链表或者数组的方式来实现的,主要考察我们对结构体的运用 今天让我们来学习一个新的数据结构,也就是 ...

  9. 平衡查找树C语言程序,C语言数据结构之平衡二叉树(AVL树)实现方法示例

    本文实例讲述了C语言数据结构之平衡二叉树(AVL树)实现方法.分享给大家供大家参考,具体如下: AVL树是每个结点的左子树和右子树的高度最多差1的二叉查找树. 要维持这个树,必须在插入和删除的时候都检 ...

最新文章

  1. c++随机打乱数组_【洗牌算法】你确定这样的抽奖算法是随机的?
  2. Pytorch基础(三)—— DataSet的应用
  3. Java api在线
  4. 计算机过滤器的作用,14种功能强大的Wireshark过滤器介绍
  5. python基础教程是什么-Python基础教程(一)
  6. Linux下安装JDK说明
  7. 通过Python将不同的附件发给不同的收件人
  8. 禁用计算机f1-f12,win10系统禁用f1-f12快捷键的操作方法
  9. 吉他基本功练习原理及方法
  10. 用c语言编写定时器程序,C语言怎么实现定时器
  11. 如何查询一个网站的域名备案信息?
  12. linux修改时间和日期,linux修改时间和日期的方法
  13. 轻松又酷炫地实现弹幕效果——手把手教学
  14. 你不知道的原生js广播频道接口
  15. GPA计算(5.0分制)
  16. Prometheus入门实践
  17. 泛函分析笔记03:完备距离空间及其应用
  18. 220817笔试(速腾聚创)
  19. Eclipse-CDT
  20. 《Arduino实验》实验:土壤湿度传感器检测土壤湿度

热门文章

  1. 『机器学习』 —— 决策树算法(Decision Tree)
  2. 华科计算机学院报录比,华科各专业报录比
  3. 笔记本电脑开启热点共享,却显示无IP分配
  4. java框架阶段个人总结
  5. 华为云CDN服务,满足你对加速的迫切需求!
  6. 集体炸锅!什么是超声刀美容,做脸部超声刀能维持多久?弄僵
  7. 哪个邮箱好用又安全?保障邮箱系统安全的7大秘诀!
  8. Linux基础命令详解
  9. 国外.edu邮箱,免费.edu教育邮箱申请
  10. python大作业——列车管理系统