二叉树深度遍历的栈实现
一、Object类栈的创建
这个与之前的通用性队列实现相似,只需char[] data
–>Object[] data
,注意在适当的地方使用强制类型转换即可。前两天强制代码没有写清楚,这里再写一下:
tempNode = (BinaryCharTree) tempStack.pop();
表示ObjectStack类型转换为BinaryCharTree类型。
二、中序遍历实现
In-order visit with stack:
In-order visit with stack:
In-order visit with stack: B
In-order visit with stack: B D A
In-order visit with stack: B D A
In-order visit with stack: B D A E
所有节点遍历完毕, 全部出栈。
In-order visit with stack: B D A E F C
三、代码与数据测试
/**
********************
* In-order visit with stack.
********************
*/
public void inOrderVisitWithStack() {
ObjectStack tempStack = new ObjectStack();
BinaryCharTree tempNode = this;
while (!tempStack.isEmpty() || tempNode != null) {
if (tempNode != null) {
tempStack.push(tempNode);
tempNode = tempNode.leftChild;
} else {
tempNode = (BinaryCharTree) tempStack.pop();
System.out.print("" + tempNode.value + " ");
tempNode = tempNode.rightChild;
} // Of if
} // Of while
} // Of inOrderVisit
运行结果: