前序遍历:就是先访问树的根节点,再访问树的左孩子,最后访问树的右孩子
两种实现方式:
用递归实现
public static void preOrder(BinaryTree root) {
if (root == null)
throw new IllegalArgumentException("请输入一棵树!");
System.out.print(root.getData()+"\t");
if (root.getLeft() != null)
preOrder(root.getLeft());
if (root.getRight() != null)
preOrder(root.getRight());
}
用栈实现
public static void preOrderUnRecur(BinaryTree root) {
System.out.println("前序遍历");
Stack<BinaryTree> stack = new Stack<>();
if (root != null) {
BinaryTree temp ;
stack.add(root);
while (! stack.isEmpty()){
temp = stack.pop();
System.out.print(temp.getData()+"\t");
if (temp.getRight() != null)
stack.add(temp.getRight());
if (temp.getRight() != null)
stack.add(temp.getLeft());
}
}
}
空间复杂度都是树的深度