以下是一个示例代码,展示如何从下往上遍历树状数据,并溯源数据:

public class TreeNode {
    public int val;
    public TreeNode parent;
    public List<TreeNode> children;

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

    public void addChild(TreeNode child) {
        child.parent = this;
        children.add(child);
    }
}

public class TreeTraversal {

    public static void main(String[] args) {
        TreeNode root = buildTree(); // 假设已经构建好了一棵树

        List<TreeNode> result = new ArrayList<>();
        traverse(root, result); // 从根节点开始遍历,结果保存在 result 中

        // 输出结果,即从下往上溯源的数据
        System.out.println("从下往上溯源的数据:");
        for (int i = result.size() - 1; i >= 0; i--) {
            System.out.print(result.get(i).val + " ");
        }
    }

    private static void traverse(TreeNode node, List<TreeNode> result) {
        for (TreeNode child : node.children) {
            traverse(child, result);
        }
        result.add(node);
    }

    private static TreeNode buildTree() {
        TreeNode root = new TreeNode(1);

        TreeNode node2 = new TreeNode(2);
        TreeNode node3 = new TreeNode(3);
        TreeNode node4 = new TreeNode(4);
        TreeNode node5 = new TreeNode(5);
        TreeNode node6 = new TreeNode(6);
        TreeNode node7 = new TreeNode(7);
        TreeNode node8 = new TreeNode(8);

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

        node2.addChild(node4);
        node2.addChild(node5);

        node3.addChild(node6);
        node3.addChild(node7);
        node3.addChild(node8);

        return root;
    }
}

在上面的示例代码中,我们定义了一个 TreeNode 类,表示树中的节点。每个节点包含一个整数值 val,一个指向其父节点的引用 parent,以及一个子节点列表 children

我们还定义了一个 traverse 方法,用于从下往上遍历树中的节点,并将遍历结果保存在 result 列表中。在遍历过程中,我们先遍历所有子节点,然后再将当前节点加入 result 列表中。

最后,我们构建了一棵树,并调用 traverse 方法从根节点开始遍历。遍历完成后,我们从 result 列表中按照逆序输出节点的值,即为从下往上溯源的数据。在这个示例中,输出结果为 4 5 2 6 7 8 3 1

java-树状数据从下往上溯源数据举例示例代码

原文地址: http://www.cveoy.top/t/topic/fQ4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录