Javaでのツリーノードを使用したバイナリツリーの実装方法


まず、ツリーノードを表すクラスを作成します。ツリーノードは、値と左右の子ノードへの参照を持ちます。

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

次に、バイナリツリーを操作するためのメソッドを実装します。

  1. ツリーにノードを挿入する方法:
public TreeNode insert(TreeNode root, int value) {
    if (root == null) {
        return new TreeNode(value);
    }
    if (value < root.value) {
        root.left = insert(root.left, value);
    } else if (value > root.value) {
        root.right = insert(root.right, value);
    }
    return root;
}
  1. ツリー内の値を検索する方法:
public boolean search(TreeNode root, int value) {
    if (root == null) {
        return false;
    }
    if (value == root.value) {
        return true;
    } else if (value < root.value) {
        return search(root.left, value);
    } else {
        return search(root.right, value);
    }
}
  1. ツリーを先行順でトラバースする方法:
public void preOrderTraversal(TreeNode root) {
    if (root != null) {
        System.out.print(root.value + " ");
        preOrderTraversal(root.left);
        preOrderTraversal(root.right);
    }
}

これらのメソッドを使用して、バイナリツリーを操作することができます。以下は、例としてバイナリツリーを作成し、操作するコードの一部です。

public static void main(String[] args) {
    TreeNode root = null;
    BinaryTree binaryTree = new BinaryTree();
    root = binaryTree.insert(root, 50);
    binaryTree.insert(root, 30);
    binaryTree.insert(root, 20);
    binaryTree.insert(root, 40);
    binaryTree.insert(root, 70);
    binaryTree.insert(root, 60);
    binaryTree.insert(root, 80);
    System.out.println("先行順でトラバース:");
    binaryTree.preOrderTraversal(root);
    System.out.println("\n値の検索:");
    System.out.println(binaryTree.search(root, 40)); // true
    System.out.println(binaryTree.search(root, 90)); // false
}

以上が、Javaでツリーノードを使用してバイナリツリーを実装する方法の一例です。これらのコード例を参考にして、バイナリツリーをさまざまな方法で使用することができます。