java实战第2版java10开发编程软件
81.4元
包邮
(需用券)
去购买 >
/**
* 线索化二叉树的节点
*/
public class IndexNode {
public int id;
public String name;
public IndexNode left;
public IndexNode right;
public IndexNode parent = null; // 后序线索化的时候需要使用
public boolean isLeftIndexed; // 0 表示left指针指向左子树, 1 表示left指针指向前驱节点
public boolean isRightIndexed; // 0 表示right指针指向右子树, 1 表示right指针指向后继节点
public IndexNode(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "[" + id + "," + name + "]";
}
// 前序遍历
public void preOrder() {
System.out.println(this);
if (left != null) left.preOrder();
if (right != null) right.preOrder();
}
// 中序遍历
public void infixOrder() {
if (left != null) left.infixOrder();
System.out.println(this);
if (right != null) right.infixOrder();
}
// 后序遍历
public void postOrder() {
if (left != null) left.postOrder();
if (right != null) right.postOrder();
System.out.println(this);
}
}
/**
* 实现线索化功能的二叉树
*/
public class IndexBinaryTree {
IndexNode root;
// 为了实现线索化,需要一个pre指针,指向当前节点的前驱
// 进行线索化的时候,pre总是指向前一个节点
IndexNode pre = null;
/** 前序遍历 */
public void preOrder() {
if (root == null) {
System.out.println("空树,无法遍历");
return;
}
root.preOrder();
}
/** 中序遍历 */
public void