//大家肯定知道,系统在执行递归方法(对于其它方法也是如此)时是使用运行时栈。对方法的每一次调用,在栈中都会创建一份此次调用的活动记录--包括方法的参数,局部变量,返回地址,动态链接库,返回值等。
// 既然系统能够隐式地使用栈去执行递归方法,那么我们就可以显式地使用栈来执行上述递归程序,这也是将递归程序转化为迭代程序的常用思想。下面的iterativeTravel方法就运用了这一思想。
public static void iterativeTravel(GenericTreeNode node) {
Stack> nodes = new Stack>();
nodes.push(node); // 将当前节点压入栈中。
while (!nodes.isEmpty()) {
GenericTreeNode bufNode = nodes.pop(); // 从栈中取出一个节点。
System.out.println(bufNode.toString())//travelNode(bufNode); // 访问节点。
if (!bufNode.isLeaf()) { // 如果该节点为分枝节点,则将它的子节点全部加入栈中。
nodes.addAll(bufNode.getChildren());//这儿导致循环,达到类似递归的效果.
}
}
}
分享到:
相关推荐
Java.util.ConcurrentModificationException 异常问题详解 ConcurrentModificationException 异常是 Java 中一个常见的异常,它发生在 Iterator 遍历集合时,集合同时被修改引起的异常。在 Java 中,集合类如 ...
在Java中,这主要与JVM(Java虚拟机)的内存模型有关,该模型包括堆(Heap)、栈(Stack)、方法区(Method Area)和程序计数器(PC Register)等几个区域。当堆或方法区的内存耗尽时,就会抛出`OutOfMemoryError`。...
Java提供日期(Data)类、日历(Calendar)类,随机数(Random)类,堆栈(Stack)、向量(Vector) 、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据结构
在java.util包中,包含了一些Java集合框架的基础类,比如Enumeration、Hashtable、Stack、Vector等,以及日期和时间处理相关的类,如Calendar、Date、TimeZone等。同时,提及了Timer和TimerTask,它们用于任务调度,...
Java.util包是Java标准库中的核心包之一,它包含了大量用于日常编程的工具类和接口。这个包在Java 2版本中得到了显著增强...通过熟练掌握和使用java.util包中的类和接口,开发者能够更加高效地处理数据和实现复杂逻辑。
在开发基于Axis2的Web服务时,可能会遇到各种错误和异常,其中之一就是与`org.apache.axis2.util.JavaUtils.callStackToString`相关的问题。这个问题通常出现在Axis2尝试获取并打印堆栈跟踪信息时。 `...
net.mindview.util包(Thinking in Java 4#)
<Call Stack = DEBUG_FRAME = org.apache.axis2.util.JavaUtils.callStackToString(JavaUtils.java:564) DEBUG_FRAME = org.apache.axis2.description.ParameterIncludeImpl.debugParameterAdd(ParameterIncludeImpl...
介绍Java的实用工具类库java.util包。在这个包中,Java提供了一些实用的方法和数据结构。例如,Java提供日期(Data)类、日历(Calendar)类来产生和获取日期及时间,提供随机数(Random)类产生各种类型的随机数,还提供...
然而,随着JDK版本的演进,`Date`类的部分方法已被标记为过时,推荐使用更为现代的`java.time`包中的类如`LocalDate`, `LocalTime`, 和`ZonedDateTime`等进行日期和时间的处理。 ##### 构造函数详解 1. **无参数...
2. **容器类**:`java.util`包还包含了一些其他容器类,如`Stack`(后进先出的栈数据结构)、`Deque`(双端队列)和`PriorityQueue`(优先队列)等。 3. **日期和时间API**:`java.util.Date`类用于表示日期和时间...
4. **`java.util.Date`** 和 **`java.time`** 包:处理日期和时间,`java.time`包是Java 8引入的新API,更强大且易于使用。 5. **`java.util.Random`**:生成随机数,适用于各种随机算法或模拟场景。 6. **`java....
在这个项目中,开发者可能使用了Java的`java.util.Stack`类来实现堆栈操作。 5. **代码实现**:在`Stack3 java.doc`文档中,通常会包含Java源代码的详细解释和实现,包括如何创建堆栈对象,如何使用堆栈方法以及...
试用java.util.Stack泛型栈作为父类,用另一个泛型栈对象作为成员变量,模拟实现一个泛型子类Queue,当存储元素的第1个栈的元素超过dump时,再有元素入队列就倒入第2栈。除提供无参构造函数Queue( )外,其它所有队列...
Java中的`java.util.ArrayDeque`类是一个高效且灵活的数据结构,它实现了`Deque`接口,同时也继承了`AbstractCollection`和`AbstractQueue`。`ArrayDeque`是一个基于可变数组的双端队列,它的主要特点是它使用一个...
xml解析工具类,包含了一下的类: org.castor.util.IdentityMap org.castor.util.IdentitySet org.exolab.javasource....org.exolab.castor.util.Stack org.castor.util.Base64Decoder org.castor.util.Base64Encoder
读完了Java.util包简介并教您如何开发应用之一接下来我们继续介绍Java的实用工具类库Java.util包。在这个包中,Java提供了一些实用的方法和数据结构。例如,Java提供日期(Data)类、日历(Calendar)类来产生和获取日期...