91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

java二叉樹怎么建立和遍歷

小億
82
2024-03-15 15:53:00
欄目: 編程語言

在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類中進行了二叉樹的建立和遍歷操作。

0
柳林县| 江永县| 津南区| 屯门区| 盖州市| 淮阳县| 湖州市| 濮阳县| 无锡市| 天水市| 南雄市| 广宗县| 武穴市| 恩平市| 台安县| 呼伦贝尔市| 玉门市| 平乡县| 久治县| 武功县| 布拖县| 丹棱县| 抚州市| 洞头县| 曲阳县| 陇南市| 西林县| 奈曼旗| 石棉县| 全椒县| 平乡县| 沈丘县| 吴忠市| 资溪县| 府谷县| 汉寿县| 竹北市| 瓦房店市| 安岳县| 三台县| 峨山|