关于java树结构的实现
请问java中有没有实现Tree型结构的类(如链表在java中可以用List实现),是不是还要自己写?另外TreeSet或TreeMap是不是能实现tree结构?若能,请...
请问java中有没有实现Tree型结构的类(如链表在java中可以用List实现),是不是还要自己写?另外TreeSet或TreeMap是不是能实现tree结构?若能,请写一个小例子,谢谢
展开
4个回答
展开全部
可以用递归模拟树
要求子树拥有父树的id;
绝对原创;
import java.util.ArrayList;
import java.util.List;
public class Test2 {
public static void main(String[]args){
List<Tree> trees = new ArrayList<Tree>();
int id = 1;
Tree t1 = new Tree(0,id++,"我是根树");
Tree t2 = new Tree(0,id++,"我是第二个根树");
Tree t3 = new Tree(1,id++,"我是子树");
trees.add(t1);
trees.add(t2);
trees.add(t3);
Tree t4 = new Tree(1,id++,"树根你好");
Tree t5 = new Tree(4,id++,"我不是树根");
Tree t6 = new Tree(5,id++,"我才是树根");
trees.add(t4);
trees.add(t5);
trees.add(t6);
show(trees);
}
public static void show(List<Tree> trees){
for(int i=0;i<trees.size();i++){
Tree t = trees.get(i);
if(t.parent == 0){
StringBuffer blank = new StringBuffer();
t.show(trees,blank);
}
}
}
}
import java.util.List;
public class Tree {
public Tree(int parent,int id,String str) {
this.parent = parent;
this.id = id;
this.str = str;
}
int parent;//树的根树
int id;
String str;
// StringBuffer blank = new StringBuffer();
void show(List<Tree> trees, StringBuffer blank){
blank.append(" ");
System.out.println(blank + str );
for(int i=0;i<trees.size();i++){
Tree t = trees.get(i);
if(t.parent == id){
t.show(trees,blank);
}
}
}
}
要求子树拥有父树的id;
绝对原创;
import java.util.ArrayList;
import java.util.List;
public class Test2 {
public static void main(String[]args){
List<Tree> trees = new ArrayList<Tree>();
int id = 1;
Tree t1 = new Tree(0,id++,"我是根树");
Tree t2 = new Tree(0,id++,"我是第二个根树");
Tree t3 = new Tree(1,id++,"我是子树");
trees.add(t1);
trees.add(t2);
trees.add(t3);
Tree t4 = new Tree(1,id++,"树根你好");
Tree t5 = new Tree(4,id++,"我不是树根");
Tree t6 = new Tree(5,id++,"我才是树根");
trees.add(t4);
trees.add(t5);
trees.add(t6);
show(trees);
}
public static void show(List<Tree> trees){
for(int i=0;i<trees.size();i++){
Tree t = trees.get(i);
if(t.parent == 0){
StringBuffer blank = new StringBuffer();
t.show(trees,blank);
}
}
}
}
import java.util.List;
public class Tree {
public Tree(int parent,int id,String str) {
this.parent = parent;
this.id = id;
this.str = str;
}
int parent;//树的根树
int id;
String str;
// StringBuffer blank = new StringBuffer();
void show(List<Tree> trees, StringBuffer blank){
blank.append(" ");
System.out.println(blank + str );
for(int i=0;i<trees.size();i++){
Tree t = trees.get(i);
if(t.parent == id){
t.show(trees,blank);
}
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
貌似没有,还有TreeSet和TreeMap只是线程安全的set和map
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class Tree {
//要求是二查树
定义根
定义左孩子
定义右孩子
}
//要求是二查树
定义根
定义左孩子
定义右孩子
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询