117.info
人生若只如初见

java二叉树怎么建立和遍历

在Java中实现二叉树的建立和遍历可以通过定义一个节点类来表示二叉树的节点,然后通过递归的方式来构建二叉树和进行遍历操作。下面是一个示例代码:

// 定义二叉树节点类
class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

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

// 二叉树类
class BinaryTree {
    private TreeNode root;

    public BinaryTree() {
        root = null;
    }

    // 递归插入节点
    private TreeNode insertRecursive(TreeNode current, int val) {
        if (current == null) {
            return new TreeNode(val);
        }

        if (val < current.val) {
            current.left = insertRecursive(current.left, val);
        } else if (val > current.val) {
            current.right = insertRecursive(current.right, val);
        }

        return current;
    }

    // 插入节点
    public void insert(int val) {
        root = insertRecursive(root, val);
    }

    // 中序遍历
    private void inorderTraversal(TreeNode node) {
        if (node != null) {
            inorderTraversal(node.left);
            System.out.print(node.val + " ");
            inorderTraversal(node.right);
        }
    }

    public void inorder() {
        inorderTraversal(root);
    }

    // 前序遍历
    private void preorderTraversal(TreeNode node) {
        if (node != null) {
            System.out.print(node.val + " ");
            preorderTraversal(node.left);
            preorderTraversal(node.right);
        }
    }

    public void preorder() {
        preorderTraversal(root);
    }

    // 后序遍历
    private void postorderTraversal(TreeNode node) {
        if (node != null) {
            postorderTraversal(node.left);
            postorderTraversal(node.right);
            System.out.print(node.val + " ");
        }
    }

    public void postorder() {
        postorderTraversal(root);
    }
}

public class Main {
    public static void main(String[] args) {
        BinaryTree tree = new BinaryTree();

        tree.insert(5);
        tree.insert(3);
        tree.insert(7);
        tree.insert(2);
        tree.insert(4);
        tree.insert(6);
        tree.insert(8);

        System.out.print("Inorder traversal: ");
        tree.inorder();
        System.out.println();

        System.out.print("Preorder traversal: ");
        tree.preorder();
        System.out.println();

        System.out.print("Postorder traversal: ");
        tree.postorder();
        System.out.println();
    }
}

以上示例代码中,通过定义TreeNode类表示二叉树的节点,定义BinaryTree类表示二叉树,实现了插入节点和三种遍历方式(中序、前序、后序)的方法。在Main类中进行了二叉树的建立和遍历操作。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fef2bAzsICAVeAlA.html

推荐文章

  • java中如何定义二维数组

    在Java中,可以通过以下方式定义二维数组:
    // 定义一个二维数组并初始化
    int[][] twoDArray = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // 定义一个空的二...

  • java二维数组的长度如何计算

    二维数组的长度是指二维数组中包含的一维数组的个数。在Java中,可以通过使用二维数组的length属性来计算二维数组的长度。具体方法如下:```javaint[][] array =...

  • java中for循环的作用是什么

    在 Java 中,`for` 循环用于重复执行特定的代码块,其作用包括:1. 迭代数组或集合:通过 `for` 循环可以遍历数组、集合或其他可迭代对象中的元素。2. 执行固定次...

  • java静态变量初始化的方法是什么

    在Java中,静态变量可以通过静态代码块或者在声明变量时直接初始化来进行初始化。 使用静态代码块进行初始化: public class MyClass { public static int stati...

  • linux用户列表信息怎么查看

    要查看Linux系统上的用户列表信息,可以使用以下几种方法: 使用命令行工具查看/etc/passwd文件:在终端窗口中输入以下命令可以查看系统上所有用户的列表信息: ...

  • oracle datediff函数的用途有哪些

    Oracle 的 DATEDIFF 函数用于计算两个日期之间的差值,可以用于计算日期之间的天数、小时数、分钟数等等。常见的用途包括: 计算两个日期之间的天数差值,例如计...

  • java脚手架搭建的步骤是什么

    搭建Java脚手架的步骤一般包括以下几个步骤: 选择适合的框架:首先需要选择适合的框架来搭建Java脚手架,常用的框架包括Spring Boot、Spring Cloud、Spring MVC...

  • Beam中怎么定义数据处理流水线

    在Beam中,数据处理流水线可以通过使用一系列的Transform来定义。Transform是对数据进行操作的基本单元,可以用来对数据进行转换、过滤、聚合等操作。数据处理流...