package com.zhlc.tree;
import java.util.ArrayList;
import java.util.List;
/**
* author:dwj <br>
* desc: <br>
* date: 2015-12-1 上午10:29:47<br>
*/
public class Tree {
private int id;
private String name;
private int parentId;
private List<Tree> childrens;
public Tree(int id,String name,int parentId){
this.id = id;
this.name = name;
this.parentId = parentId;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getParentId() {
return parentId;
}
public void setParentId(int parentId) {
this.parentId = parentId;
}
public List<Tree> getChildrens() {
return childrens;
}
public void setChildrens(List<Tree> childrens) {
this.childrens = childrens;
}
@Override
public String toString() {
return "Tree [id=" + id + ", name=" + name + ", parentId=" + parentId
+ ", childrens=" + childrens + "]";
}
public static void main(String[] args) {
Tree tree1 = new Tree(1, "顶层节点1", 0);
Tree tree2 = new Tree(2, "顶层节点2", 0);
Tree tree3 = new Tree(3, "顶层节点3", 0);
Tree tree4 = new Tree(4, "二级节点4", 1);
Tree tree5 = new Tree(5, "二级节点5", 2);
Tree tree6 = new Tree(6, "二级节点6", 3);
Tree tree7 = new Tree(7, "三级节点7", 4);
Tree tree8 = new Tree(8, "三级节点8", 4);
Tree tree9 = new Tree(9, "三级节点9", 5);
List<Tree> trees = new ArrayList<Tree>();
trees.add(tree9);
trees.add(tree8);
trees.add(tree7);
trees.add(tree6);
trees.add(tree5);
trees.add(tree4);
trees.add(tree3);
trees.add(tree2);
trees.add(tree1);
List<Tree> rootTrees = new ArrayList<Tree>();
for (Tree tree : trees) {
if(tree.getParentId() == 0){
rootTrees.add(tree);
}
for (Tree t : trees) {
if(t.getParentId() == tree.getId()){
if(tree.getChildrens() == null){
List<Tree> myChildrens = new ArrayList<Tree>();
myChildrens.add(t);
tree.setChildrens(myChildrens);
}else{
tree.getChildrens().add(t);
}
}
}
}
for (Tree tree : rootTrees) {
System.out.println(tree.toString());
}
}
}
分享到:
相关推荐
在ASP中创建无限循环树结构,我们需要定义一个ASP页面或函数,该页面或函数能够根据需要不断生成新的子节点。每个节点都可以被视为一个ASP页面,包含对父节点的引用以及对自身子节点的生成逻辑。为了实现无限循环,...
在DOM树的情况下,递归非常适合用来遍历整个树结构,因为它可以深入到树的每一层,确保每个节点都被访问。 #### Java实现示例 以下是一个使用递归和DOM来遍历XML文档的Java代码示例: ```java package ...
对于FOR循环,需要识别并构建如下的抽象语法树(AST)结构: ``` FOR (初始化; 条件; 更新) 循环体 ``` 这里,初始化通常包含赋值操作,条件是布尔表达式,更新是循环变量的变化。 3. **语义分析**:在此阶段...
总之,"java_树形结构文档"可能涵盖了上述内容,包括但不限于树的基本概念、Java中实现树的类结构、树的遍历方法、特定树结构如二叉树和红黑树的特性和应用。通过学习这个文档,开发者将能够更好地理解和利用树形...
### Java遍历文件树形结构输出 在Java编程中,我们经常会遇到需要遍历文件夹中的所有文件,并将其以树形结构输出的需求。这在文件系统管理、构建项目目录结构等场景中非常实用。下面将详细介绍如何使用Java来实现这...
1. 定义树形结构的基础类,例如`TreeNode`,它包含一个引用类型属性`children`来存储子节点集合。 ```java public class TreeNode { private int value; private List<TreeNode> children; public TreeNode(int ...
Java中的for循环语句是程序控制结构中的一种基本形式,常用于重复执行某段代码,直到满足特定条件为止。for循环适用于已知循环次数或需要按照特定规律进行迭代的情况。在Java中,for循环通常由四部分组成: 1. 初始...
但是,要创建多层嵌套的文件夹,我们需要结合使用`for`循环和条件判断。 以下是一个简单的批处理脚本示例,用于创建一个包含多级子文件夹的结构: ```batch @echo off setlocal enabledelayedexpansion rem 定义...
### 图解数据结构6-树及树的遍历 #### 一、树的基本概念 树是一种非线性的数据结构,其形状如同一棵倒置的树,具有一个根节点(root)和若干子节点(sub-nodes),并且子节点可以进一步拥有自己的子节点。在计算机科学...
接下来,我们可以创建一个多叉树类,用于管理树的操作,例如插入节点、深度遍历和广度遍历。这里是一个基本的多叉树实现: ```java public class MultiwayTree { private Node root; public MultiwayTree() { ...
下面是一个简单的示例代码,展示了如何使用for循环创建一棵圣诞树: ```cpp #include int main() { int treeHeight = 10; // 设置树的高度 for (int i = 0; i ; i++) { // 外层循环控制高度 for (int j = 0; j...
这个函数会创建一个`TreeNode`实例并将其添加到适当的位置,确保树结构的正确构建。整个过程需要有效地处理边界情况,例如没有父节点的节点(根节点)以及处理可能存在的循环引用问题。 在实际应用中,我们可能还...
当我们将数据结构与循环结构结合时,可以创建出高效且灵活的算法来处理复杂的问题。 在“数据结构输出整数循环结构”的主题中,我们可以探讨如何利用数据结构,如数组、链表或栈,来实现循环输出整数的逻辑。以下是...
2. **for循环**:在许多编程语言中,for循环用于遍历序列(如数组、列表或字符串)的每个元素。Python中的for循环具有简洁的语法,例如: ```python fruits = ["apple", "banana", "cherry"] for fruit in fruits...
Vue的灵活性和组件化特性使得构建这种交互式的树结构变得相对简单。在这个项目中,我们看到几个关键的文件,如`兼容老版本1.html`、`org-tree.less`、`index.htm`和`org-tree.css`,这些都是构建组织机构树所必需的...
例如,一个`for`循环内嵌一个`while`循环,可以实现复杂的逻辑操作,如矩阵遍历或树形结构的遍历。 四、无限循环 如果循环条件总是为真,或者没有适当的退出机制,就会导致无限循环。无限循环虽然不是常规编程目标...
4. 构建树结构:通过递归或迭代的方式,根据给定的数据序列构建多叉树。 接下来是打印多叉树,常见的方法有层次遍历(level-order traversal)。层次遍历从根节点开始,逐层访问所有节点。这通常使用队列(queue)...
这里需要注意的是,这个实现并不是真正的二分搜索树结构,而更像是一个顺序存储的数组。 ##### 2. 查找函数 `Search` ```cpp template bool ListSet<T>::Search(T x) { int m, low = 0, high = n - 1; while ...
### 哈夫曼编码——用树结构实现的 #### 概述 本文将详细介绍如何通过树结构构建哈夫曼树以及如何从该树中获取哈夫曼编码。哈夫曼编码是一种广泛应用于数据压缩领域的编码方法,尤其适用于无损压缩场景。其核心思想...
4. **循环体**:这是for循环中实际执行的代码块。解析函数可能名为`parseLoopBody()`。 每个函数都会遵循以下模式: - 检查当前输入流是否符合预期的语法结构。 - 如果匹配,执行相应的操作(如创建语法树节点)并...