java如何遍历一棵二叉树

java如何遍历一棵二叉树

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

用户关注问题

Q
有哪些常用的方法可以用Java遍历二叉树?

我想了解在Java中,遍历二叉树时有哪些主流的遍历方法?

A

二叉树遍历的主流方式

Java中遍历二叉树通常采用三种方式:前序遍历、中序遍历和后序遍历。前序遍历按照根节点->左子树->右子树的顺序,中序遍历是左子树->根节点->右子树,后序遍历则是左子树->右子树->根节点。除此之外,还可以使用层序遍历,通过队列实现从上到下、从左到右的遍历方式。

Q
Java实现递归遍历二叉树的示例代码长什么样?

我不太清楚如何用递归方式遍历二叉树,在Java中具体怎么写代码?

A

Java递归遍历二叉树示例

递归是遍历二叉树时很方便的一种方式。以前序遍历为例,可以通过定义一个递归方法,先访问根节点,然后递归遍历左子树,再递归遍历右子树。示例代码如下:

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

类似的,可以将访问顺序调整实现中序或后序遍历。

Q
使用迭代法遍历二叉树在Java中如何实现?

除了递归,我能用什么样的迭代方式遍历二叉树?需要一些Java示例代码。

A

Java迭代遍历二叉树的实现

迭代遍历二叉树通常借助栈来模拟递归调用栈的行为。以中序遍历为例,迭代方法需要一个栈,先沿着左子树一路入栈,直到左子树为空,然后弹出节点并访问,最后转向右子树。示例代码如下:

void inorderTraversal(TreeNode root) {
    Stack<TreeNode> stack = new Stack<>();
    TreeNode current = root;
    while (current != null || !stack.isEmpty()) {
        while (current != null) {
            stack.push(current);
            current = current.left;
        }
        current = stack.pop();
        System.out.print(current.val + " ");
        current = current.right;
    }
}