`

java多叉树

    博客分类:
  • java
 
阅读更多
1.建立节点对象
<wiz_code_mirror>
 
 
 
 
 
@Getter
@Setter
@Builder(builderClassName = "NodeBuilder")
@NoArgsConstructor
@AllArgsConstructor
public class Node {
    private Node parent;
    private String name;
    private int rank; //同级排行
    private int level;//层级
    private List<Node> childrens=new ArrayList<Node>();
}
 
 
2.插入对象   先插入3层每层3个子节点
<wiz_code_mirror>
 
 
 
 
 
   @Test
    public void addNode(){
        Node.NodeBuilder builder = Node.builder();
        Node a = builder.level(1).name("a").rank(1).parent(null).childrens(new ArrayList<Node>()).build();
        createTree(a);
//        queryTree(a);//从上往下一直查找再返回上一层查找
        querylevelTree(a);//一层一层查找
        return;
    }
public void createTree(Node parent){
            if(parent.getLevel()>2){//建立3层 父节点层级大于2就退出
                return;
            }else {
                for (int i = 0; i < 3; i++) {
                    int level = parent.getLevel() + 1;
                    Node node = createNode(level, "a" + level +parent.getRank() +"-"+i, parent,i);
                    parent.getChildrens().add(node);
                    createTree(node);//递归建立子节点
                }
            }
    }
 
    public Node createNode(int level,String name,Node parent,int rank){
        Node.NodeBuilder builder = Node.builder();
        Node a = builder.level(level).name(name).childrens(new ArrayList<Node>()).parent(parent).rank(rank).build();
        return a;
    }
 
 
3.查找子节点方法一(从顶部往底部查找)
<wiz_code_mirror>
 
 
 
 
 
public void queryTree(Node a){
        System.out.println(a.getName());
        if(a.getChildrens()!=null&&a.getChildrens().size()>0){
            List<Node> childrens = a.getChildrens();
            for(int i = 0; i< childrens.size();i++){
                queryTree(childrens.get(i));
            }
        }else {//没有子节点退出循环
            return;
        }
   }
 
 
输出
a
a21-0
a30-0
a30-1
a30-2
a21-1
a31-0
a31-1
a31-2
a21-2
a32-0
a32-1
a32-2
4.查找子节点方法二(一层一层查找)
<wiz_code_mirror>
 
 
 
 
 
 public void querylevelTree(Node a){
        if(a.getChildrens()!=null&&a.getChildrens().size()>0){
            List<Node> childrens = a.getChildrens();
            for(int i = 0; i< childrens.size();i++){//先把当前层查找完  再查找下一层
                System.out.println(childrens.get(i).getName());
            }
            for(int i = 0; i< childrens.size();i++){//查找下一层
                querylevelTree(a.getChildrens().get(i));
            }
        }else {//没有子节点退出循环
            return;
        }
    }
 
 
输出
a21-0
a21-1
a21-2
a30-0
a30-1
a30-2
a31-0
a31-1
a31-2
a32-0
a32-1
a32-2
分享到:
评论

相关推荐

    java多叉树的实现和遍历输出

    在Java编程中,多叉树是一种非线性数据结构,每个节点可以有多个子节点,与二叉树(每个节点最多有两个子节点)相比,它提供了更广泛的灵活性。本篇文章将深入探讨如何在Java中实现多叉树以及其遍历方法。 首先,...

    新概念智能树形菜单--利用加权多叉树结合

    "新概念智能树形菜单"是一种创新的用户界面元素,它利用了加权多叉树的数据结构,结合JavaScript技术,为用户提供了一种高效、直观的导航方式。下面我们将深入探讨这一主题。 首先,我们来理解“树形菜单”。树形...

    java多叉树的个性化拓展

    在Java编程中,多叉树是一种非线性的数据结构,它由节点(或称为顶点)和连接这些节点的边组成。与二叉树不同,每个节点在多叉树中可以有任意数量的子节点,而不仅仅局限于两个。在本项目中,我们不仅实现了基本的...

    Java实现多叉树查找

    在Java编程中,多叉树是一种非线性的数据结构,其中每个节点可以有多个子节点。这个给定的代码实现了一个简单的多叉树结构,主要包含节点类`TreeNode`,用于构建树形结构并进行查找操作。以下是这个实现的关键知识点...

    java树的前中后序遍历

    用递归和堆栈两种方法对树分别进行前中后序的遍历

    BST.rar_二叉树_多叉树

    在IT领域,二叉树和多叉树是数据结构中的重要组成部分,它们广泛应用于各种算法设计和程序实现中。在这个“BST.rar_二叉树_多叉树”压缩包中,我们可以推测它包含了关于二叉搜索树(Binary Search Tree, BST)的相关...

    基于内存多叉树的Ext JS无限级树形菜单实现方案

    ### 基于内存多叉树的Ext JS无限级树形菜单实现方案 #### 一、研究背景与意义 在当前Web应用程序开发领域,Ext JS框架因其强大的功能和丰富的组件库而受到广泛欢迎,尤其在构建复杂的用户界面时表现突出。在Ext JS...

    java解析xml动态生成树形菜单结构

    总结起来,实现“java解析xml动态生成树形菜单结构”的项目,需要掌握以下核心知识点: 1. Java的DOM解析XML,构建树形数据结构。 2. 设计和实现无限层级的树形菜单数据模型。 3. 使用`JSTree`库在前端渲染树形菜单...

    在java中 遍历mysql中的树形结构

    在Java中遍历MySQL数据库中的树形结构是一项常见的任务,尤其是在处理组织结构、文件系统或任何具有层次关系的数据时。本文将深入探讨如何利用Java语言和MySQL数据库来实现这一功能,解析给定代码片段,并提供一种...

    ALEX Personal Knowledge Base-开源

    《ALEX Personal Knowledge Base——打造你的专属开源知识管理体系》 在信息化时代,知识的积累与管理变得至关重要。ALEX Personal Knowledge Base(以下简称ALEX PKB)是一款专为个人设计的开源知识库管理工具,...

    决策树算法(Java实现)

    (2)common为公用类,只包含了表示多叉树的类TreeNode (3)data为数据,包含了BaseRecord(基础记录,这里只有一个属性,就是要分类的属性Boolean的,其他数据库实体都应该继承该类) HummanAttrRecord(描述用户的属性类...

    java语言实现的二叉树的各种操作(包括递归与非递归遍历二叉树,求二叉树的高度,节点总数,叶子节点等)

    java语言实现的二叉树的各种操作(包括递归与非递归遍历二叉树,求二叉树的高度,节点总数,叶子节点等)

    Java实现遍历、排序、查找算法及简要说明

    在Java中,可以使用递归实现,如上文的`preOrder()`函数所示,首先访问根节点,然后递归地遍历左子树和右子树。 2. 中序遍历:遵循“左-根-右”的顺序。`midOrder()`函数展示了这个过程,先遍历左子树,然后访问根...

    java_树形结构文档

    对于更复杂的树结构,如多叉树或自定义的树类型,开发者需要自己实现相关的方法,如添加子节点、删除子节点、遍历树(深度优先搜索DFS或广度优先搜索BFS)等。这些操作通常涉及递归或栈/队列的使用。 在处理树形...

    关于java树型结构

    在Java中,树型结构主要由两种类型实现:二叉树和多叉树。二叉树是最简单的一种,每个节点最多有两个子节点,分为左子节点和右子节点。二叉树的特殊形式有完全二叉树和满二叉树。多叉树则允许每个节点有三个以上的子...

    java创建树和解析树(支持二叉树)

    节点可能有两个子节点(对于二叉树)或者任意数量的子节点(对于多叉树)。类的结构可能如下: ```java public class Node&lt;T&gt; { private T value; private List&lt;Node&lt;T&gt;&gt; children; public Node(T value) { ...

    TrubleYou#ZXBlog#POJ - 2342. Anniversary party(员工的活跃度问题)(多叉树以及树形

    //标记当前结点已经做过父 也就是它的dp两个值都算出来了//来的活跃度 加上儿子不来的活跃度//不来的活跃度是儿子来或不来的最大值public static

    javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】

    数据结构中的多叉树是一种非线性的数据组织方式,它由节点和边构成,每个节点可以有多个子节点。在JavaScript中,多叉树常用于处理复杂的数据结构,例如DOM文档对象模型,其中HTML元素之间的关系就是以多叉树的形式...

    java-tree2.rar_tree

    `TreeDemo3.java`可能涵盖了N叉树或多叉树的实现。与二叉树不同,N叉树的每个节点可以有N个子节点,N大于2。这使得树结构更灵活,适用于处理具有多个关联元素的情况。例如,Trie树(字典树)就是一种多叉树,用于...

    数据结构的2叉树算法

    数据结构的2叉树算法,是大学里数据结构的一些作业

Global site tag (gtag.js) - Google Analytics