目录
1.前序遍历(Preorder Traversal)
2.中序遍历(Inorder Traversal)
3.中序遍历(Postorder Traversal)
4.层序遍历(Level Order Traversal)
1.前序遍历(Preorder Traversal)
访问顺序:根左右
java代码实现:
public void preorderTraversal() {
preorderTraversal(root);
}
private void preorderTraversal(Node node) {
if(node == null) return;
System.out.println(node.element);
preorderTraversal(node.left);
preorderTraversal(node.right);
}
2.中序遍历(Inorder Traversal)
访问顺序:左根右
java代码实现:
public void inorderTraversal() {
preorderTraversal(root);
}
private void inorderTraversal(Node node) {
if(node == null) return;
preorderTraversal(node.left);
System.out.println(node.element);
preorderTraversal(node.right);
}
3.中序遍历(Postorder Traversal)
访问顺序:左根右
java代码实现:
public void postorderTraversal() {
preorderTraversal(root);
}
private void postorderTraversal(Node node) {
if(node == null) return;
preorderTraversal(node.left);
preorderTraversal(node.right);
System.out.println(node.element);
}
4.层序遍历(Level Order Traversal)
访问顺序:从上到下,从左到右依次访问每一个节点
实现思路:
1.将根节点入队
2.循环执行以下操作,直到队列为空
- 将队头节点A出队,进行访问
- 将A的左子节点入队
- 将A的右子节点入队
代码实现:
public void levelorderTraversal() {
if(root == null) return;
Queue> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()) {
Node node = queue.poll();
System.out.println(node.element);
if (node.left != null) {
queue.offer(node.left);
}
if (node.right != null) {
queue.offer(node.left);
}
}
}



