租用问题

质量为本、客户为根、勇于拼搏、务实创新

< 返回租用问题列表

如何用java递归查询树形结构,java递归法

发布时间:2023-11-04 15:11:10

如何用java递归查询树形结构

要使用Java递归查询树形结构,首先需要定义树的节点类,包括节点的值和子节点列表。然后,编写递归查询的方法。

以下是一个示例代码:

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;
    }

    // 递归查询树中是否是包括指定值的节点
    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
    }
}

在上面的示例中,首先定义了一个TreeNode类,表示树的节点。Tree类表示全部树结构,并包括了一个递归查询方法containsValue,用于在树中查找是否是包括指定值的节点。

main方法中,创建了一个包括多个节点的树,并进行了查询操作。输出结果为true表示树中包括指定值的节点,输出结果为false表示树中不包括指定值的节点。