经典Java面试题解析:二叉树的中序遍历

6,005次阅读
没有评论

共计 1081 个字符,预计需要花费 3 分钟才能阅读完成。

一觉睡到小时候
2023-07-12 09:30:00
浏览数 (1792)

在 Java 的面试中,二叉树的遍历是一个常见的算法主题。本文将介绍一道经典的 Java 面试题——二叉树的中序遍历,并提供详细的解析和解题思路。

题目

给定一个二叉树,按照中序遍历的顺序输出节点的值。

解析与解题思路

二叉树的中序遍历是一种常见的树遍历方式,可以使用递归或迭代的方式来实现。

  1. 递归解法:如果二叉树为空,则返回。首先递归地中序遍历当前节点的左子树。输出当前节点的值。最后递归地中序遍历当前节点的右子树。
  2. 迭代解法(使用栈):创建一个栈,并将根节点入栈。初始化一个指针 current 指向根节点。当栈不为空或 current 不为空时,重复以下步骤:如果 current 不为空,将 current 入栈,将 current 更新为其左子节点。如果 current 为空,弹出栈顶节点,输出其值,并将 current 更新为弹出节点的右子节点。

以下是 Java 代码实例(使用递归解法):

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int val) {this.val = val;}
}

public class InorderTraversal {public static void inorderTraversal(TreeNode root) {if (root == null) {return;}

        inorderTraversal(root.left); // 递归地中序遍历左子树
        System.out.print(root.val + " "); // 输出当前节点的值
        inorderTraversal(root.right); // 递归地中序遍历右子树
    }

    public static void main(String[] args) {
        /*
         * 构造二叉树:*      1
         *     / 
         *    2   3
         *   / 
         *  4   5
         */
        TreeNode root = new TreeNode(1);
        root.left = new TreeNode(2);
        root.right = new TreeNode(3);
        root.left.left = new TreeNode(4);
        root.left.right = new TreeNode(5);

        System.out.print("中序遍历结果:");
        inorderTraversal(root);
    }
}

输出结果:

 中序遍历结果:4 2 5 1 3

结论

通过递归或迭代的方式,我们可以实现二叉树的中序遍历。掌握了解题思路和实现代码,我们能够在面试中更加自信地回答相关问题。

  学 java,就到 java 编程狮

原文地址: 经典 Java 面试题解析:二叉树的中序遍历

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-09-20发表,共计1081字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)