返回顶部
首页 > 资讯 > 精选 >Java中树的存储结构实现示例代码
  • 763
分享到

Java中树的存储结构实现示例代码

java存储结构 2023-05-31 03:05:52 763人浏览 八月长安
摘要

一、树树与线性表、栈、队列等线性结构不同,树是一种非线性结构。一棵树只有一个根节点,如果一棵树有了多个根节点,那它已经不再是一棵树了,而是多棵树的集合,也被称为森林。二、树的父节点表示法树中除根节点之外每个节点都有一个父节点,为了记录树中节

一、树

树与线性表、栈、队列等线性结构不同,树是一种非线性结构。

一棵树只有一个根节点,如果一棵树有了多个根节点,那它已经不再是一棵树了,而是多棵树的集合,也被称为森林。

二、树的父节点表示法

树中除根节点之外每个节点都有一个父节点,为了记录树中节点与节点之间的父子关系,可以为每个节点增加一个parent域,用以记录该节点的父节点。

package com.ietree.basic.datastructure.tree;import java.util.ArrayList;import java.util.List;public class TreeParent<E> {  public static class node<T> {    T data;    // 保存其父节点的位置    int parent;    public Node() {    }    public Node(T data) {      this.data = data;    }    public Node(T data, int parent) {      this.data = data;      this.parent = parent;    }    public String toString() {      return "TreeParent$Node[data=" + data + ", parent=" + parent + "]";    }  }  private final int DEFAULT_TREE_SIZE = 100;  private int treeSize = 0;  // 使用一个Node[]数组来记录该树里的所有节点  private Node<E>[] nodes;  // 记录树的节点数  private int nodeNums;  // 以指定节点创建树  public TreeParent(E data) {    treeSize = DEFAULT_TREE_SIZE;    nodes = new Node[treeSize];    nodes[0] = new Node<E>(data, -1);    nodeNums++;  }  // 以指定根节点、指定treeSize创建树  public TreeParent(E data, int treeSize) {    this.treeSize = treeSize;    nodes = new Node[treeSize];    nodes[0] = new Node<E>(data, -1);    nodeNums++;  }  // 为指定节点添加子节点  public void addNode(E data, Node parent) {    for (int i = 0; i < treeSize; i++) {      // 找到数组中第一个为null的元素,该元素保存新节点      if (nodes[i] == null) {        // 创建新节点,并用指定的数组元素保存它        nodes[i] = new Node(data, pos(parent));        nodeNums++;        return;      }    }    throw new RuntimeException("该树已满,无法添加新节点");  }  // 判断树是否为空  public boolean empty() {    // 根结点是否为null    return nodes[0] == null;  }  // 返回根节点  public Node<E> root() {    // 返回根节点    return nodes[0];  }  // 返回指定节点(非根结点)的父节点  public Node<E> parent(Node node) {    // 每个节点的parent记录了其父节点的位置    return nodes[node.parent];  }  // 返回指定节点(非叶子节点)的所有子节点  public List<Node<E>> children(Node parent) {    List<Node<E>> list = new ArrayList<Node<E>>();    for (int i = 0; i < treeSize; i++) {      // 如果当前节点的父节点的位置等于parent节点的位置      if (nodes[i] != null && nodes[i].parent == pos(parent)) {        list.add(nodes[i]);      }    }    return list;  }  // 返回该树的深度  public int deep() {    // 用于记录节点的最大深度    int max = 0;    for (int i = 0; i < treeSize && nodes[i] != null; i++) {      // 初始化本节点的深度      int def = 1;      // m 记录当前节点的父节点的位置      int m = nodes[i].parent;      // 如果其父节点存在      while (m != -1 && nodes[m] != null) {        // 向上继续搜索父节点        m = nodes[m].parent;        def++;      }      if (max < def) {        max = def;      }    }    return max;  }  // 返回包含指定值的节点  public int pos(Node node) {    for (int i = 0; i < treeSize; i++) {      // 找到指定节点      if (nodes[i] == node) {        return i;      }    }    return -1;  }}

--结束END--

本文标题: Java中树的存储结构实现示例代码

本文链接: https://lsjlt.com/news/223146.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java中树的存储结构实现示例代码
    一、树树与线性表、栈、队列等线性结构不同,树是一种非线性结构。一棵树只有一个根节点,如果一棵树有了多个根节点,那它已经不再是一棵树了,而是多棵树的集合,也被称为森林。二、树的父节点表示法树中除根节点之外每个节点都有一个父节点,为了记录树中节...
    99+
    2023-05-31
    java 存储结构
  • Java实现树形结构的示例代码
    目录前言数据库表结构实现思路具体代码1、造数据,和数据库表数据一致2、树型结构实体类前言 由于业务需要,后端需要返回一个树型结构给前端,包含父子节点的数据已经在数据库中存储好,现在需...
    99+
    2024-04-02
  • Java实现Treap树的示例代码
    目录Treap树数据结构遍历查询增加删除完整代码Treap树 Treap树是平衡二叉搜索树的一种实现方式,但它不是完全平衡的。平衡二叉搜索树的实现方式还有AVL树、红黑树、替罪羊树、...
    99+
    2024-04-02
  • vue实现树形结构增删改查的示例代码
    其实很多公司都会有类似于用户权限树的增删改查功能,正好最近我刚写了一个树形结构的增删改,在这里和大家分享一下,如果有不合理的地方欢迎评论,我会尽快优化~~ 先附上一下效果图 这个是没...
    99+
    2024-04-02
  • Java栈之链式栈存储结构的实现代码
    Java栈之链式栈存储结构实现一、链栈采用单链表来保存栈中所有元素,这种链式结构的栈称为链栈。二、栈的链式存储结构实现package com.ietree.basic.datastructure.stack;public class Lin...
    99+
    2023-05-31
    java 存储
  • java树结构stream工具类的示例代码详解
    菜单实体类 package com.example.demo.entity; import lombok.AllArgsConstructor; import lombok.Bu...
    99+
    2024-04-02
  • Java实现树形结构的代码怎么写
    本篇内容介绍了“Java实现树形结构的代码怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!数据库表结构实现思路拿到有父子节点的集合数据遍...
    99+
    2023-06-30
  • Java实现级联下拉结构的示例代码
    目录前言构建统一返回下拉结构构建集合<对象>转下拉树工具类构建List<Map>转下拉或下拉树的工具类前言 在开发过程中,会遇到很多的实体需要将查出的数据处理...
    99+
    2024-04-02
  • QtQTreeWidget树形结构实现代码
    Qt中实现树形结构可以使用QTreeWidget类,也可以使用QTreeView类,QTreeWidget继承自QTreeView类。树形效果如下图所示: 这是怎么实现的呢?还有点...
    99+
    2024-04-02
  • Java语言描述存储结构与邻接矩阵代码示例
    存储结构要存储一个图,我们知道图既有结点,又有边,对于有权图来说,每条边上还带有权值。常用的图的存储结构主要有以下二种:邻接矩阵邻接表邻接矩阵我们知道,要表示结点,我们可以用一个一维数组来表示,然而对于结点和结点之间的关系,则无法简单地用一...
    99+
    2023-05-30
    java 算法 邻接矩阵
  • Java实现二分搜索树的示例代码
    目录1.概念2.重点操作3.完整代码1.概念 a.是个二叉树(每个节点最多有两个子节点) b.对于这棵树中的节点的节点值 左子树中的所有节点值 < 根节点 < 右子树的所...
    99+
    2024-04-02
  • java 实现简单圣诞树的示例代码
    以下是一个简单的Java代码示例,实现了一个简单的圣诞树的打印功能:```javapublic class ChristmasTre...
    99+
    2023-09-16
    java
  • java实现简单圣诞树的示例代码
    以下是一个简单的Java示例代码,实现了一个基本的圣诞树打印功能:```javapublic class ChristmasTree...
    99+
    2023-09-17
    Java
  • mysql的树形结构存储及查询实例分析
    这篇文章主要介绍“mysql的树形结构存储及查询实例分析”,在日常操作中,相信很多人在mysql的树形结构存储及查询实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql的树形结构存储及查询实例分析...
    99+
    2023-06-29
  • Java实现二叉树的示例代码(递归&迭代)
    目录1.二叉树基本概念见上节:详解Java中二叉树的基础概念(递归&迭代) 2.本次展示链式存储 以此图为例,完整代码如下: //基础二叉树实现 //使用左右孩子表示法 ...
    99+
    2024-04-02
  • java编程无向图结构的存储及DFS操作代码的示例分析
    这篇文章将为大家详细讲解有关java编程无向图结构的存储及DFS操作代码的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。图的概念图是算法中是树的拓展,树是从上向下的数据结构,结点都有一个父结点(根...
    99+
    2023-05-30
    java dfs
  • InnoDB中逻辑存储结构的示例分析
    这篇文章主要为大家展示了“InnoDB中逻辑存储结构的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“InnoDB中逻辑存储结构的示例分析”这篇文章吧。I...
    99+
    2024-04-02
  • Java数据结构之实现哈夫曼树的示例分析
    这篇文章主要介绍了Java数据结构之实现哈夫曼树的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、与哈夫曼树相关的概念概念含义1. 路径从树中一个结点到另一个结点的...
    99+
    2023-06-15
  • pytorch实现ResNet结构的实例代码
    目录1.ResNet的创新1)亮点2)原因2.ResNet的结构1)浅层的残差结构2)深层的残差结构3)总结3.Batch Normalization4.参考代码1.ResNet的创...
    99+
    2024-04-02
  • java数据结构之树的示例分析
    这篇文章主要介绍java数据结构之树的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!树定义和基本术语定义树(Tree)是n(n≥0)个结点的有限集T,并且当n>0时满足下列条件:(1)有且仅有一个特定的称为根...
    99+
    2023-05-30
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作