数据结构 树及树的存储结构
来源:互联网 发布:手机关闭蜂窝移动数据 编辑:程序博客网 时间:2024/05/16 23:36
概述
树,它是由n(n>=0)个有限节点组成一个具有层次关系的集合。当n=0时,这棵树被称之为空树。
树它具有以下的特点:
- 每个节点有零个或多个子节点;
- 没有父节点的节点称为根节点;
- 每一个非根节点有且只有一个父节点;
- 除了根节点外,每个子节点可以分为多个不相交的子树;
树的相关属性
结点的度
- 结点拥有的子树数称为结点的度。
- 度为0的结点称为叶子结点或终端结点,度不为0的结点称为非终端结点或分支结点。
- 除根结点以外,分支结点也称为内部结点。
- 树的度:一棵树中,最大的节点的度称为树的度;
层次与深度
- 节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
- 树的高度或深度:树中节点的最大层次;
- 兄弟节点:具有相同父节点的节点互称为兄弟节点;
- 堂兄弟节点:双亲在同一层的节点互为堂兄弟;
树的分类
- 无序树:树中任意节点的子结点之间没有顺序关系,这种树称为无序树,也称为自由树;
- 有序树:树中任意节点的子结点之间有顺序关系,这种树称为有序树;
- 霍夫曼树:带权路径最短的二叉树称为哈夫曼树或最优二叉树;
- 二叉树:每个节点最多含有两个子树的树称为二叉树;
树的数据结构
在树的数据结构中,简单的数据结构不能满足树,所以我们需要通过顺序存储结构和链式存储结构。
通常,有三种方式来表示树的存储结构:
- 双亲表示法
- 孩子表示法
- 孩子兄弟表示法
双亲表示法
所谓双亲表示法,在每个结点中,附设一个指示器指示其双亲结点到链表中的位置。
双亲表示法的的优点是找到双亲节点容易,但是找到孩子节点困难。
数据结构:
具体表示如下:
代码定义:
/** * 双亲表示法 */ public class TreeNode<E> { private int parent; private E data; }
孩子表示法
所谓孩子表示法,就是把每个结点的孩子结点排列起来,以单链表作为存储结构,则n个结点有n个孩子链表,如果是叶子结点则此单链表为空,然后n个头指针又组成一个线性表,采用顺序存储结构,存放在一个一维数组中。
使用孩子表示法,寻找孩子节点比较容易,但是找到双亲节点会非常困难。
数据结构:
具体表示如下:
代码实现:
/** * 头节点 */ public class HeadNode<E> { private E data; private ChildNode firstChild; } /** * 孩子节点 */ public class ChildNode<E>{ private E data; private ChildNode next; }
孩子兄弟表示法
任意一棵树,它的结点的第一个孩子如果存在就是唯一的,它的右兄弟如果存在也是唯一的。因此,我们设置两个指针,分别指向该结点的第一个孩子和此结点的右兄弟。这种数据结构称之为孩子兄弟表示法。
数据结构:
具体表示如下:
代码实现如下:
public class Node<E> { private E data; private Node firstChild; private Node rightBrother; }
0 0
- 数据结构 树及树的存储结构
- Java数据结构-树及树的存储结构
- 数据结构-树的存储结构
- 数据结构——树的存储结构
- 数据结构 - 二叉树的存储结构
- 数据结构(7):树的存储结构
- 数据结构(8):二叉树的存储结构
- 数据结构之树的存储结构
- 树的存储结构(数据结构)
- 二叉树的存储结构(数据结构)
- 数据结构 非线性结构 树 介绍及存储方法
- 数据结构(六)树----树、森林与二叉树的转换及树的存储结构
- 树及二叉树的存储结构
- 树的简介及存储结构
- 【数据结构】二叉树的顺序存储结构--遍历二叉树
- 数据结构:二叉树的遍历和存储结构
- 数据结构与算法4:树的基本存储结构
- 数据结构之树的三种存储结构
- 【JavaScript】1.ECMAScript6新特性
- 使用vi打开.cpp文件,格式化代码时需要让tab缩进4个空格,如何设置vi
- java——list切割
- Git查看、删除、重命名远端分支和tag
- jQuery删除数组中重复元素
- 数据结构 树及树的存储结构
- Laravel Middleware 中间件
- Ueditor那点事
- Android——谷歌官方下拉刷新控件SwipeRefreshLayout
- 在线用户和访问记录管理项目(代码部分)
- 计算机图形学-实验3-掌握利用OpenGL函数进行鼠标、键盘操作,创建菜单
- Eclipse启动tomcat报错java.lang.OutOfMemoryError: PermGen space
- PCB设计中的3W规则
- 6.learningAction(行为库)