用Java实现一个树形结构,并对其进行遍历import java.util.Iterator;
import java.util.Random;
import java.util.TreeSet;
public class Demo{
public static void main(String[] args) throws Exception {
TreeSetInteger ts = new TreeSetInteger();
for(int i = 0; i10; i){
ts.add(new Random().nextInt(999));
}
for(IteratorInteger it = ts.iterator(); it.hasNext();){
System.out.println(it.next());
}
}
}
//上面是利用TreeSet进行简单的二叉树实现,另有遍历,当然遍历是自然顺序 。
//如有需要请自行修改吧 。
如何用Java拼接JSON方式遍历整个树形节点//是类似这种吗
//控制层使用JSONArray jsonObject=JSONArray.fromObject();转换
MapString,Object map = new HashMapString, Object();
map.put("id","1");
map.put("text","实验外国语学校");
ListMapString,Object fatherList=new ArrayListMapString,Object();
ListMapString,Object list=new ArrayListMapString,Object();
for(Bean bean:list){
if("1".equals(list.getParent_level())){
MapString,Object map2=new HashMapString, Object();
map2.put("id",list.getId());
map2.put("text",list.getName());
list.add(map2);
}
}
map.put("children",list);
利用JAVA 先序建立二叉树 #表示空树 。例如输入ABC##DE#G##F### 先序遍历输出ABCDEGF 我写的程序不能输出java树的遍历代码你的程序有诸多问题,你的程序运行时候应该也会报错的吧java树的遍历代码?
这个写法不是很通用 , 不过java树的遍历代码我还是按照你的源码修改成了你想要的结果 。
结构上基本一致,可实现基本已经面目全非了 。
我用字符串代替了手工输入,你要是喜欢手工输入,你可以把我那个注释掉,用你自己的……
以下是修改后可用的代码:
import java.util.*;
class Node {
Node left;
Node Right;
char data;// 节点数据
void print() {
System.out.println(data"");
}
public Node() {
this.left = null;
this.Right = null;
}
public Node(char data) {
this.left = null;
this.Right = null;
this.data = https://www.04ip.com/post/data;
}
}
class BTree {
static Node root = new Node();// 为根节点分配空间
static char ch[];// 输入的字符串
static int i = 0;
static Node CreateTree()// 先序建立二叉树
{
Node node = null;
if (ch[i] == '#') {
node = null;
i;
}else {
node = new Node();
node.data = https://www.04ip.com/post/ch[i];
i;
node.left = CreateTree();
node.Right = CreateTree();
}
return node;
}
static public void preorder(Node node)// 先序遍历二叉树
{
if (node != null) {
node.print();
preorder(node.left);
preorder(node.Right);
} else {
System.out.println("Tree node is empty");
}
}
}
public class Tree {
public static void main(String args[]) {
Scanner reader = new Scanner(System.in);
BTree.ch = new char[16];
BTree.ch[0] = 'a';
// 读取输入字符数组,以*结尾
BTree.ch = "ABC##DE#G##F###".toCharArray();
//for (int i = 0; (BTree.ch[i] = reader.next().charAt(0)) != '*'; i){}
BTree.root = BTree.CreateTree();
BTree.preorder(BTree.root);
}
}
java怎么对树形结构进行遍历java"import java.util.Iterator;
import java.util.Random;
import java.util.TreeSet;
public class Demo{
public static void main(String[] args) throws Exception {
TreeSetInteger ts = new TreeSetInteger();
for(int i = 0; i10; i){
ts.add(new Random().nextInt(999));
}
for(IteratorInteger it = ts.iterator(); it.hasNext();){
System.out.println(it.next());
}
}
}
Java List遍历方法及其效率对比 Java代码
package zbalpha test;
import java util ArrayList;
import java util Iterator;
import java util List;
public class ListTest {
public static void main(String args[]){
ListLong lists = new ArrayListLong();
for(Long i= l;i l;i){
lists add(i);
}
Long oneOk = oneMethod(lists);
Long oOk = oMethod(lists);
Long threeOk = threeMethod(lists);
Long fourOk = fourMethod(lists);
System out println( One:oneOk);
System out println( Two:oOk);
System out println( Three:threeOk);
System out println( four:fourOk);
}
public static Long oneMethod(ListLong lists){
Long timeStart = System currentTimeMillis();
for(int i= ;ilists size();i){
System out println(lists get(i));
}
Long timeStop = System currentTimeMillis();
return timeStop timeStart ;
}
public static Long oMethod(ListLong lists){
Long timeStart = System currentTimeMillis();
for(Long string : lists){
System out println(string);
}
Long timeStop = System currentTimeMillis();
return timeStop timeStart ;
}
public static Long threeMethod(ListLong lists){
Long timeStart = System currentTimeMillis();
IteratorLong it = erator();
while (it hasNext())
{
System out println(it next());
}
Long timeStop = System currentTimeMillis();
return timeStop timeStart ;
}
public static Long fourMethod(ListLong lists){
Long timeStart = System currentTimeMillis();
for(IteratorLong i = erator(); i hasNext();){
System out println(i next());
}
Long timeStop = System currentTimeMillis();
return timeStop timeStart ;
}
}
容器类可以大大提高编程效率和编程能力 在Java 中 所有java树的遍历代码的容器都由SUN公司的Joshua Bloch进行java树的遍历代码了重新设计 丰富了容器类库的功能
Java 容器类类库的用途是 保存对象 它分为两类
Collection 一组独立的元素 通常这些元素都服从某种规则 List必须保持元素特定的顺序 而Set不能有重复元素
Map 一组成对的 键值对 对象 即其元素是成对的对象 最典型的应用就是数据字典 并且还有其它广泛的应用 另外 Map可以返回其所有键组成的Set和其所有值组成的Collection 或其键值对组成的Set 并且还可以像数组一样扩展多维Map 只要让Map中键值对的每个 值 是一个Map即可
迭代器
迭代器是一种设计模式 它是一个对象 它可以遍历并选择序列中的对象 而开发人员不需要了解该序列的底层结构 迭代器通常被称为 轻量级 对象 因为创建它的代价小
Java中的Iterator功能比较简单 并且只能单向移动
( ) 使用方法iterator()要求容器返回一个Iterator 第一次调用Iterator的next()方法时 它返回序列的第一个元素
( ) 使用next()获得序列中的下一个元素
( ) 使用hasNext()检查序列中是否还有元素
( ) 使用remove()将迭代器新返回的元素删除
Iterator是Java迭代器最简单的实现 为List设计的ListIterator具有更多的功能 它可以从两个方向遍历List 也可以从List中插入和删除元素
List的功能方法
List(interface): 次序是List最重要的特点 它确保维护元素特定的顺序 List为Collection添加了许多方法 使得能够向List中间插入与移除元素(只推荐 LinkedList使用) 一个List可以生成ListIterator 使用它可以从两个方向遍历List 也可以从List中间插入和删除元素
ArrayList: 由数组实现的List 它允许对元素进行快速随机访问 但是向List中间插入与移除元素的速度很慢 ListIterator只应该用来由后向前遍历ArrayList 而不是用来插入和删除元素 因为这比LinkedList开销要大很多
LinkedList: 对顺序访问进行了优化 向List中间插入与删除得开销不大 随机访问则相对较慢(可用ArrayList代替) 它具有方法addFirst() addLast() getFirst() getLast() removeFirst() removeLast() 这些方法(没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈 队列和双向队列使用
Set的功能方法
Set(interface): 存入Set的每个元素必须是唯一的 因为Set不保存重复元素 加入Set的Object必须定义equals()方法以确保对象的唯一性 Set与Collection有完全一样的接口 Set接口不保证维护元素的次序
HashSet: 为快速查找而设计的Set 存入HashSet的对象必须定义hashCode()
TreeSet: 保持次序的Set 底层为树结构 使用它可以从Set中提取有序的序列
LinkedHashSet: 具有HashSet的查询速度 且内部使用链表维护元素的顺序(插入的次序) 于是在使用迭代器遍历Set时 结果会按元素插入的次序显示
lishixinzhi/Article/program/Java/hx/201311/26494
java Map 怎么遍历java Map 遍历一般有四种方式
方式一: 这是最常见的并且在大多数情况下也是最可取的遍历方式 。在键值都需要时使用 。
方式二: 在for-each循环中遍历keys或values 。
如果只需要map中的键或者值,你可以通过keySet或values来实现遍历 , 而不是用entrySet 。
该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净 。
方式三:使用Iterator遍历
使用泛型:
不使用泛型:
你也可以在keySet和values上应用同样的方法 。
方法四:通过键找值遍历(效率低)
作为方法一的替代 , 这个代码看上去更加干净;但实际上它相当慢且无效率 。
因为从键取值是耗时的操作(与方法一相比,在不同的Map实现中该方法慢了20%~200%) 。如果安装了FindBugs,它会做出检查并警告你关于哪些是低效率的遍历 。所以尽量避免使用 。
总结:
如果仅需要键(keys)或值(values)使用方法二 。
如果所使用的语言版本低于java 5 , 或是打算在遍历时删除entries,必须使用方法三 。
否则使用方法一(键值都要) 。
扩展资料:
类似的遍历算法:
二叉树的遍历算法
1、先(根)序遍历的递归算法定义:
若二叉树非空,则依次执行如下操作:
⑴ 访问根结点;
⑵ 遍历左子树;
⑶ 遍历右子树 。
2、中(根)序遍历的递归算法定义:
若二叉树非空,则依次执行如下操作:
⑴遍历左子树;
⑵访问根结点;
⑶遍历右子树 。
3、后(根)序遍历得递归算法定义:
若二叉树非空,则依次执行如下操作:
⑴遍历左子树;
⑵遍历右子树;
⑶访问根结点 。
参考资料:百度百科——Java
【java树的遍历代码 java遍历树形结构】java树的遍历代码的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于java遍历树形结构、java树的遍历代码的信息别忘了在本站进行查找喔 。
推荐阅读
- 直播伴侣60帧,直播伴侣画面延时10秒怎么解决
- 打扫屋子用什么拍摄,打扫屋子用什么拍摄好看
- linux测试挂载命令,linux查看挂载命令
- 把人生当成养成游戏的意思,把人生当成一场游戏
- go语言编程与实战技巧 go语言编程模式
- flutter小册掘金,flutter metal
- 如何看待新媒体电商,如何看待新媒体行业
- 电脑端抖音直播助手,抖音直播助手有苹果电脑版吗?
- 最邻近插值java代码 最邻近插值算法