java-树状数据从下往上溯源数据举例示例代码
以下是一个示例代码,展示如何从下往上遍历树状数据,并溯源数据:
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。
原文地址: http://www.cveoy.top/t/topic/fQ4 著作权归作者所有。请勿转载和采集!