Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java递归查询父子节点

作者:ー辈ふ只寵你人   发布日期:2025-05-17   浏览:67

// 定义节点类
class Node {
    int id; // 节点ID
    int parentId; // 父节点ID
    String name; // 节点名称

    public Node(int id, int parentId, String name) {
        this.id = id;
        this.parentId = parentId;
        this.name = name;
    }

    @Override
    public String toString() {
        return "Node{" +
                "id=" + id +
                ", parentId=" + parentId +
                ", name='" + name + '\'' +
                '}';
    }
}

public class RecursiveQuery {

    // 模拟的节点列表
    static List<Node> nodeList = Arrays.asList(
            new Node(1, 0, "Root"),
            new Node(2, 1, "Child 1"),
            new Node(3, 1, "Child 2"),
            new Node(4, 2, "Child 1.1"),
            new Node(5, 2, "Child 1.2"),
            new Node(6, 3, "Child 2.1")
    );

    // 递归查询所有子节点
    public static List<Node> getAllChildren(int parentId) {
        List<Node> children = new ArrayList<>();
        for (Node node : nodeList) {
            if (node.parentId == parentId) {
                children.add(node);
                // 递归查询子节点的子节点
                children.addAll(getAllChildren(node.id));
            }
        }
        return children;
    }

    // 递归查询所有父节点
    public static List<Node> getAllParents(int nodeId) {
        List<Node> parents = new ArrayList<>();
        for (Node node : nodeList) {
            if (node.id == nodeId) {
                if (node.parentId != 0) {
                    parents.add(node);
                    // 递归查询父节点的父节点
                    parents.addAll(getAllParents(node.parentId));
                }
                break;
            }
        }
        return parents;
    }

    public static void main(String[] args) {
        // 查询所有子节点
        System.out.println("All children of node 1: " + getAllChildren(1));

        // 查询所有父节点
        System.out.println("All parents of node 4: " + getAllParents(4));
    }
}

解释说明:

  1. Node 类:定义了节点的基本属性,包括 id(节点ID)、parentId(父节点ID)和 name(节点名称)。
  2. nodeList:模拟了一个包含多个节点的列表,用于测试递归查询功能。
  3. getAllChildren 方法:递归查询给定父节点ID的所有子节点,并返回一个包含所有子节点的列表。对于每个找到的子节点,继续递归查找其子节点。
  4. getAllParents 方法:递归查询给定节点ID的所有父节点,并返回一个包含所有父节点的列表。对于每个找到的父节点,继续递归查找其父节点。
  5. main 方法:演示了如何使用 getAllChildrengetAllParents 方法来查询指定节点的子节点和父节点。

通过这种方式,可以实现对父子节点关系的递归查询。

上一篇:java怎么定义数组

下一篇:java日期格式化yyyymmdd

大家都在看

java连接数据库的代码

ubuntu 卸载java

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java 时间加一天

java demo

java 截取

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站