溫馨提示×

java二叉樹代碼怎么寫

小億
82
2024-09-13 15:01:13
欄目: 編程語言

在 Java 中,可以使用類來表示二叉樹節(jié)點和二叉樹。下面是一個簡單的二叉樹實現(xiàn):

// 定義二叉樹節(jié)點類
class TreeNode {
    int value; // 節(jié)點值
    TreeNode left; // 左子節(jié)點
    TreeNode right; // 右子節(jié)點

    // 構(gòu)造方法
    public TreeNode(int value) {
        this.value = value;
        this.left = null;
        this.right = null;
    }
}

// 定義二叉樹類
class BinaryTree {
    private TreeNode root; // 根節(jié)點

    // 構(gòu)造方法
    public BinaryTree() {
        root = null;
    }

    // 向二叉樹中插入節(jié)點
    public void insert(int value) {
        if (root == null) {
            root = new TreeNode(value);
        } else {
            insertRecursively(root, value);
        }
    }

    // 遞歸插入節(jié)點
    private void insertRecursively(TreeNode node, int value) {
        if (value< node.value) {
            if (node.left == null) {
                node.left = new TreeNode(value);
            } else {
                insertRecursively(node.left, value);
            }
        } else {
            if (node.right == null) {
                node.right = new TreeNode(value);
            } else {
                insertRecursively(node.right, value);
            }
        }
    }

    // 中序遍歷二叉樹
    public void inorderTraversal() {
        inorderTraversalRecursively(root);
        System.out.println();
    }

    // 遞歸中序遍歷
    private void inorderTraversalRecursively(TreeNode node) {
        if (node != null) {
            inorderTraversalRecursively(node.left);
            System.out.print(node.value + " ");
            inorderTraversalRecursively(node.right);
        }
    }
}

// 測試代碼
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.println("中序遍歷結(jié)果:");
        tree.inorderTraversal();
    }
}

這個例子中,我們定義了一個 TreeNode 類來表示二叉樹的節(jié)點,包含節(jié)點值、左子節(jié)點和右子節(jié)點。然后定義了一個 BinaryTree 類來表示二叉樹,包含根節(jié)點和插入、中序遍歷等操作方法。最后在 Main 類中進行測試,插入一些節(jié)點并進行中序遍歷。

0