1.建立节点对象
<wiz_code_mirror>
builderClassName = "NodeBuilder") (
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>
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多叉树的实现:节点集合生成多叉树,单个节点添加到多叉树,深度遍历,广度遍历
新概念智能树形菜单--利用加权多叉树结合
在实现基本多叉树的基础上,个性化拓展了实现了得到某个节点的全部递归子节点,孤独子节点,第一层级子节点对应的全部递归子节点等数据的功能处理。
3 import java.util.List; 4 import java.util.ArrayList; 5 import java.io.Serializable; 6 7 public class TreeNode implements Serializable { 8 private int parentId; 9 private int ...
用递归和堆栈两种方法对树分别进行前中后序的遍历
java解析xml动态生成树形菜单结构 可以满足无限层的树形菜单,该工程的所有代码,都有详细的实例。 以及js控制树形菜单的伸展和收缩,以及全选
在java中 遍历mysql中的树形结构
本文实例讲述了javascript数据结构之多叉树经典操作。分享给大家供大家参考,具体如下: 多叉树可以实现复杂的数据结构的存储,通过遍历方法可以方便高效的查找数据,提高查找的效率,同时方便管理节点数据。...
个人知识库管理。
(2)common为公用类,只包含了表示多叉树的类TreeNode (3)data为数据,包含了BaseRecord(基础记录,这里只有一个属性,就是要分类的属性Boolean的,其他数据库实体都应该继承该类) HummanAttrRecord(描述用户的属性类...
java语言实现的二叉树的各种操作(包括递归与非递归遍历二叉树,求二叉树的高度,节点总数,叶子节点等)
Java实现遍历、排序、查找算法及简要说明
//标记当前结点已经做过父 也就是它的dp两个值都算出来了//来的活跃度 加上儿子不来的活跃度//不来的活跃度是儿子来或不来的最大值public static
数据结构的2叉树算法,是大学里数据结构的一些作业
Java 网站敏感词过滤,里面自带词库,架包版本为2.0版本,本 Java工具包由北京师范大学2000级计算机系 张人杰 开发制作 基于多叉树的查找,我这是写了一个如何使用的例子,不懂QQ 248786960
二叉树-递归-多叉树中最长的连续序列 动态规划-连续子数组最大和 数据结构-LRU淘汰算法 其他-二十进制相加 有序数组中位数 数组中的k个最小值 项目举例 秒杀架构 系统设计 系统设计-高并发抢红包 系统设计-答题套路 ...
使用说明: 1、本 Java工具包由北京师范大学2000级计算机系 张人杰 开发制作 基于多叉树的查找,任何问题请联系: zhrenjie04@126.com 2、工具包自带敏感词词库,第一次调用时读入词库,故第一次调用时间可能较长,...
系统主要使用由北京师范大学2000级计算机系张人杰开发制作的基于多叉树的查找的Java工具包:alex-word-filter.jar,工具包自带有2445敏感词的词库。我只是做了简单的应用,写了个小系统。
基于多叉树的敏感词、关键词过滤的工具包,用于java中的敏感词过滤1、本Java工具包由北京师范大学2000级计算机系 张人杰 开发制作 基于多叉树的查找,任何问题请联系: alex.zhangrj@hotmail.com
实现过程: 1、将菜单记录从数据库中查出,放入Set对象中; 2、对菜单记录进行排序; 3、创建一颗多叉树; 4、对树进行先根遍历,将遍历过程中获得的菜单放到集合对象List中。