欢迎访问宙启技术站
智能推送

在Java中实现二叉树的遍历函数方法

发布时间:2023-06-19 15:47:34

在Java中,二叉树的遍历函数方法有三种:前序遍历、中序遍历和后序遍历。这里先给出二叉树的定义:

class TreeNode {
    int val;                    // 节点的值
    TreeNode left;              // 左子节点
    TreeNode right;             // 右子节点

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

前序遍历函数方法:

前序遍历按照根节点、左子树、右子树的顺序进行遍历。

public void preOrder(TreeNode node) {
    if (node != null) {
        System.out.println(node.val);         // 输出根节点
        preOrder(node.left);                  // 遍历左子树
        preOrder(node.right);                 // 遍历右子树
    }
}

中序遍历函数方法:

中序遍历按照左子树、根节点、右子树的顺序进行遍历。

public void inOrder(TreeNode node) {
    if (node != null) {
        inOrder(node.left);                   // 遍历左子树
        System.out.println(node.val);         // 输出根节点
        inOrder(node.right);                  // 遍历右子树
    }
}

后序遍历函数方法:

后序遍历按照左子树、右子树、根节点的顺序进行遍历。

public void postOrder(TreeNode node) {
    if (node != null) {
        postOrder(node.left);                 // 遍历左子树
        postOrder(node.right);                // 遍历右子树
        System.out.println(node.val);         // 输出根节点
    }
}

以上三种遍历函数方法都是递归实现的,每次调用函数时都会先遍历左、右子树,直到节点为空才停止。可以使用栈来将递归改为迭代实现。也可以使用Morris遍历方法来实现二叉树的中序遍历,可以实现O(1)空间复杂度的中序遍历。