用java怎么读取一个无限循环的树结构啊

时间:2023-01-10 10:46:01
用java怎么读取一个无限循环的树结构啊 ?急求 谢谢 请联系我 QQ49036821 

9 个解决方案

#1


无限循环?

那就一层一层的读,按需读取。

#2


说是无限循环,只要能读取很多层就可以了。我想的是用递归算法 不过不怎么会,求源码

#3


树结构无限循环,不知道说的是什么意思,是这棵树在一直动态的增加元素吗?如果是的话用中序遍历应该可以

#4


无限?
这个真的是无限吧

只要不会有死循环,用递归 可以的

#5


//比如结构体为
Class Tree(){
  String name;
  parent Tree;
  List<Tree> childs;
}
//读取的时候一层层的读:
//第一层就是Tree:
List<Tree> childs=Tree.getChilds();//他的parent一定为空,因为是第一层
//递归方法
void readTree(List<Tree> childs){
for(Tree t:childs){
  if(t.childs!=null){
     readTree(t.getChilds);
  }else{
   System.out.println("该层的名字为"+t.getName());
  }
}
}
//以上是递归设计的示意代码,直接在这里写的,楼主按照这个设计测试一下肯定是没有问题的!

#6


  怎么会是无限啊
  是不是级别比较多啊,像省、市等等吧

#7


你说的是循环的数吧


用一个hashset记录已经访问过的节点,如果访问过就不在访问,用递归算法实现

#8


向指定盘符容器内填充文件,在硬盘中递归,读取所有文件,不过很慢  

 public int setOneDiskAllList(DefaultMutableTreeNode node,String path,int ii){//向指定盘符容器内填充文件
 
   String [] b = nextList(path);//得到本路径下列表
 
   if(b==null) return 0;
           
           
   for(int i = 0 ;i<=b.length-1;i++){
   String aPath=path;//临时存储
   path = path+"\\"+b[i]; //得到b[i]的具体地址
 DefaultMutableTreeNode node2 = new DefaultMutableTreeNode(b[i]);//创建新节点
   //System.out.println(ii++);
node.add(node2);//向树内增加节点
  // System.out.println(i);
   System.out.println(path);
  
setOneDiskAllList(node2,path,ii);//递归
   path=aPath;
   }
   
           return 0;
}


   public String[] nextList(String a){//通过路径知道本路径下文件列表
   File b = new File(a);
   String[] c = b.list();
  
           return c;
   }

#9


什么是循环?什么是无限循环?
图才有循环结构,树怎么会循环?
如果你说是树的层次比较多,那也是有一定的深度的树,不可能无限深度。

//比如结构体为
Class TreeNode(){
  String name;
  parent TreeNode;
  List<TreeNode> childs;
}
//读取的时候一层层的读:

//递归方法,先根遍历,我假设TreeNode的childes,name都可以直接访问,如果不能直接访问,改为相
//应的geter.
void preorder(TreeNode root){
  if(root!=null){
     //这里对root结点做相应的操作,比如System.out.println(root.name);
     for(TreeNode child:root.childs){
         preoder(child);
     }
     //如果是在这里对root做相应的操作是后根遍历。
  }
}


#1


无限循环?

那就一层一层的读,按需读取。

#2


说是无限循环,只要能读取很多层就可以了。我想的是用递归算法 不过不怎么会,求源码

#3


树结构无限循环,不知道说的是什么意思,是这棵树在一直动态的增加元素吗?如果是的话用中序遍历应该可以

#4


无限?
这个真的是无限吧

只要不会有死循环,用递归 可以的

#5


//比如结构体为
Class Tree(){
  String name;
  parent Tree;
  List<Tree> childs;
}
//读取的时候一层层的读:
//第一层就是Tree:
List<Tree> childs=Tree.getChilds();//他的parent一定为空,因为是第一层
//递归方法
void readTree(List<Tree> childs){
for(Tree t:childs){
  if(t.childs!=null){
     readTree(t.getChilds);
  }else{
   System.out.println("该层的名字为"+t.getName());
  }
}
}
//以上是递归设计的示意代码,直接在这里写的,楼主按照这个设计测试一下肯定是没有问题的!

#6


  怎么会是无限啊
  是不是级别比较多啊,像省、市等等吧

#7


你说的是循环的数吧


用一个hashset记录已经访问过的节点,如果访问过就不在访问,用递归算法实现

#8


向指定盘符容器内填充文件,在硬盘中递归,读取所有文件,不过很慢  

 public int setOneDiskAllList(DefaultMutableTreeNode node,String path,int ii){//向指定盘符容器内填充文件
 
   String [] b = nextList(path);//得到本路径下列表
 
   if(b==null) return 0;
           
           
   for(int i = 0 ;i<=b.length-1;i++){
   String aPath=path;//临时存储
   path = path+"\\"+b[i]; //得到b[i]的具体地址
 DefaultMutableTreeNode node2 = new DefaultMutableTreeNode(b[i]);//创建新节点
   //System.out.println(ii++);
node.add(node2);//向树内增加节点
  // System.out.println(i);
   System.out.println(path);
  
setOneDiskAllList(node2,path,ii);//递归
   path=aPath;
   }
   
           return 0;
}


   public String[] nextList(String a){//通过路径知道本路径下文件列表
   File b = new File(a);
   String[] c = b.list();
  
           return c;
   }

#9


什么是循环?什么是无限循环?
图才有循环结构,树怎么会循环?
如果你说是树的层次比较多,那也是有一定的深度的树,不可能无限深度。

//比如结构体为
Class TreeNode(){
  String name;
  parent TreeNode;
  List<TreeNode> childs;
}
//读取的时候一层层的读:

//递归方法,先根遍历,我假设TreeNode的childes,name都可以直接访问,如果不能直接访问,改为相
//应的geter.
void preorder(TreeNode root){
  if(root!=null){
     //这里对root结点做相应的操作,比如System.out.println(root.name);
     for(TreeNode child:root.childs){
         preoder(child);
     }
     //如果是在这里对root做相应的操作是后根遍历。
  }
}