java树结构如何按顺序遍历

java树结构如何按顺序遍历

作者:Rhett Bai发布时间:2026-02-27阅读时长:0 分钟阅读次数:13

用户关注问题

Q
Java中有哪些常用的树结构遍历方式?

我想了解在Java中实现树结构时,常用的遍历方式有哪些?它们有什么区别?

A

Java树结构的常见遍历方式

在Java中,树结构的遍历主要有三种方式:前序遍历、中序遍历和后序遍历。前序遍历是先访问根节点,再访问左子树,最后访问右子树;中序遍历先访问左子树,再访问根节点,最后访问右子树;后序遍历则是先访问左子树和右子树,最后访问根节点。每种遍历方式适用于不同的场景,比如中序遍历常用于二叉搜索树,以得到有序的数据输出。

Q
如何用Java递归实现二叉树的按顺序遍历?

我想用Java代码实现二叉树的按顺序遍历,该如何编写递归函数?

A

Java递归实现中序遍历的示例

递归实现按顺序遍历一般指中序遍历,基本思路是先递归遍历左子树,然后访问当前节点,最后递归遍历右子树。示例代码如下:

void inorderTraversal(TreeNode node) {
  if (node == null) return;
  inorderTraversal(node.left);
  System.out.println(node.val);
  inorderTraversal(node.right);
}

你可以根据实际节点定义替换TreeNode类型和字段。

Q
Java中非递归实现树结构按顺序遍历的方法有哪些?

如果不使用递归,我该如何在Java中实现树结构的有序遍历?

A

基于栈的非递归遍历方法

非递归中序遍历通常使用栈来模拟递归调用栈的行为。具体步骤是:从根节点开始不断访问左子节点并入栈,直到到达最左的叶子节点;然后弹出栈顶节点访问;接着访问该节点的右子节点,再重复此过程。示例伪代码如下:

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.println(current.val);
    current = current.right;
  }
}