java二叉树如何遍历

java二叉树如何遍历

作者:William Gu发布时间:2026-02-14阅读时长:0 分钟阅读次数:2

用户关注问题

Q
Java中有哪些常见的二叉树遍历方法?

我想了解Java中实现二叉树遍历时,常用的遍历方式有哪些?

A

Java中常用的二叉树遍历方式

Java中二叉树的遍历主要包括前序遍历、中序遍历和后序遍历三种深度优先遍历方式,以及层序遍历这类广度优先遍历。前序遍历先访问根节点,再访问左子树,最后访问右子树;中序遍历是先访问左子树,再访问根节点,最后访问右子树;后序遍历先访问左右子树,再访问根节点;层序遍历则是按层级从上到下、从左到右依次访问节点。

Q
如何用递归方式实现Java二叉树的中序遍历?

我想用Java递归方法完成二叉树的中序遍历,具体怎么写代码?

A

使用递归实现二叉树中序遍历示例

递归实现Java二叉树中序遍历时,先递归访问左子节点,打印当前节点值,再递归访问右子节点。示例如下:

void inorderTraversal(TreeNode root) {
    if (root == null) return;
    inorderTraversal(root.left);
    System.out.print(root.val + " ");
    inorderTraversal(root.right);
}

该代码中,TreeNode是二叉树节点类,包含字段val、left、right。

Q
使用Java遍历二叉树时,怎样实现层序遍历?

我不知道如何在Java中实现二叉树的层序遍历,有什么简单思路或者代码示范吗?

A

Java中使用队列实现二叉树层序遍历

层序遍历通常用队列实现,先将根节点加入队列,然后循环处理队头节点,访问并将其左、右子节点加入队列,直到队列为空。示例代码如下:

void levelOrderTraversal(TreeNode root) {
    if (root == null) return;
    Queue<TreeNode> queue = new LinkedList<>();
    queue.offer(root);
    while (!queue.isEmpty()) {
        TreeNode node = queue.poll();
        System.out.print(node.val + " ");
        if (node.left != null) queue.offer(node.left);
        if (node.right != null) queue.offer(node.right);
    }
}

这种方法能按层次顺序访问每个节点。