怎么用java遞歸查詢(xún)樹(shù)形結(jié)構(gòu)

小億
172
2023-11-04 15:11:10

要使用Java遞歸查詢(xún)樹(shù)形結(jié)構(gòu),首先需要定義樹(shù)的節(jié)點(diǎn)類(lèi),包含節(jié)點(diǎn)的值和子節(jié)點(diǎn)列表。然后,編寫(xiě)遞歸查詢(xún)的方法。

以下是一個(gè)示例代碼:

class TreeNode {
    int value;
    List<TreeNode> children;

    public TreeNode(int value) {
        this.value = value;
        this.children = new ArrayList<>();
    }
}

class Tree {
    TreeNode root;

    public Tree(TreeNode root) {
        this.root = root;
    }

    // 遞歸查詢(xún)樹(shù)中是否包含指定值的節(jié)點(diǎn)
    public boolean containsValue(TreeNode node, int value) {
        if (node.value == value) {
            return true;
        }
        
        for (TreeNode child : node.children) {
            if (containsValue(child, value)) {
                return true;
            }
        }
        
        return false;
    }
}

public class Main {
    public static void main(String[] args) {
        TreeNode node1 = new TreeNode(1);
        TreeNode node2 = new TreeNode(2);
        TreeNode node3 = new TreeNode(3);
        TreeNode node4 = new TreeNode(4);
        TreeNode node5 = new TreeNode(5);
        
        node1.children.add(node2);
        node1.children.add(node3);
        node2.children.add(node4);
        node3.children.add(node5);
        
        Tree tree = new Tree(node1);
        
        System.out.println(tree.containsValue(tree.root, 3)); // 輸出:true
        System.out.println(tree.containsValue(tree.root, 6)); // 輸出:false
    }
}

在上面的示例中,首先定義了一個(gè)TreeNode類(lèi),表示樹(shù)的節(jié)點(diǎn)。Tree類(lèi)表示整個(gè)樹(shù)結(jié)構(gòu),并包含了一個(gè)遞歸查詢(xún)方法containsValue,用于在樹(shù)中查找是否包含指定值的節(jié)點(diǎn)。

main方法中,創(chuàng)建了一個(gè)包含多個(gè)節(jié)點(diǎn)的樹(shù),并進(jìn)行了查詢(xún)操作。輸出結(jié)果為true表示樹(shù)中包含指定值的節(jié)點(diǎn),輸出結(jié)果為false表示樹(shù)中不包含指定值的節(jié)點(diǎn)。

0