Java树结构查询当前节点全路径

在实际开发中,我们经常会遇到树形结构的数据,例如组织结构、目录结构等。当需要查询某个节点在树中的全路径时,我们可以通过递归的方式来实现。

类图

下面是一个简单的Java类图,表示一个树节点的结构:

classDiagram
    class TreeNode {
        - String name
        - List<TreeNode> children
        + TreeNode(String name)
        + String getName()
        + List<TreeNode> getChildren()
        + void addChild(TreeNode node)
        + List<String> getFullPath()
    }

在这个类图中,TreeNode表示树节点,包含节点的名称name和子节点列表children,以及相应的方法来获取节点名称、子节点、添加子节点以及获取节点全路径。

状态图

下面是一个简单的状态图,表示树节点的状态:

stateDiagram
    [*] --> Created
    Created --> Active: addChild()
    Active --> Active: addChild()
    Active --> Inactive: deleteChild()
    Inactive --> Active: addChild()
    Inactive --> [*]

在状态图中,树节点的初始状态是Created,当调用addChild()方法添加子节点时,节点状态变为Active,可以继续添加子节点;当调用deleteChild()方法删除子节点时,节点状态变为Inactive,无法再添加子节点。

代码示例

下面是一个简单的Java代码示例,演示如何查询树节点的全路径:

import java.util.ArrayList;
import java.util.List;

public class TreeNode {
    private String name;
    private List<TreeNode> children;

    public TreeNode(String name) {
        this.name = name;
        this.children = new ArrayList<>();
    }

    public String getName() {
        return name;
    }

    public List<TreeNode> getChildren() {
        return children;
    }

    public void addChild(TreeNode node) {
        children.add(node);
    }

    public List<String> getFullPath() {
        List<String> fullPath = new ArrayList<>();
        fullPath.add(this.name);

        if (!children.isEmpty()) {
            for (TreeNode child : children) {
                List<String> childPath = child.getFullPath();
                fullPath.addAll(childPath);
            }
        }

        return fullPath;
    }

    public static void main(String[] args) {
        TreeNode root = new TreeNode("root");
        TreeNode node1 = new TreeNode("node1");
        TreeNode node2 = new TreeNode("node2");
        TreeNode node3 = new TreeNode("node3");

        root.addChild(node1);
        root.addChild(node2);
        node2.addChild(node3);

        List<String> fullPath = node3.getFullPath();
        System.out.println("Full Path: " + String.join(" -> ", fullPath));
    }
}

在这段代码中,我们首先创建了一个树节点root,并添加了几个子节点。然后我们通过调用getFullPath()方法来获取node3节点的全路径,并输出到控制台。

通过这段代码示例,我们可以看到如何使用递归的方式来查询树节点的全路径,这在实际开发中非常实用。

结论

通过本文的介绍,我们了解了如何在Java中查询树节点的全路径。通过递归遍历子节点,我们可以轻松地获取任意节点在树中的全路径。希望本文对你有所帮助,谢谢阅读!