前序遍历
前序遍历(Preorder Traversal)
前序遍历顺序:根节点、前序遍历左子树,前序遍历右子树。
所谓前序遍历,是把根节点放在前面。
如图,则其遍历顺序为:
| 根节点 | 左子树 | 右子树 |
|---|---|---|
| 7 | 4 2 1 3 5 | 9 8 11 10 12 |
代码:
private void preorderTraversal(Node<E> node) {
if (node == null) return;
System.out.println(node.element);
preorderTraversal(node.left);
preorderTraversal(node.right);
}
中序遍历
中序遍历(Inorder Traversal)
访问顺序:中序遍历左子树、根节点、中序遍历右子树。
根据图中的序号,我们可知其遍历结果为: 1 2 3 4 5 6 7 8 9 10 11 12
而如果访问顺序是中序遍历右子树、根节点、中序遍历左子树,则顺序是: 12 11 10 9 8 7 6 5 4 3 2 1 可知,二叉搜索树的中序遍历结果是升序或者降序。
代码:
/**
* 中序遍历
*/
public void inorderTraversal() {
inorderTraversal(root);
}
private void inorderTraversal(Node<E> node) {
if (node == null) return; //如果为空,则结束。
inorderTraversal(node.left);
System.out.println(node.element);
inorderTraversal(node.right);
}