一个父级数组一个子级数组 组成父子级结构
时间: 2024-03-26 12:39:54 浏览: 75
java实现多层嵌套循环参数转换
你好,如果已知一个父级数组和一个子级数组,并且这两个数组是按照一定顺序排列的,那么我们可以使用一个 Map 数据结构来将它们组成父子级结构。
首先,我们可以将父级数组和子级数组中的每个元素都放入 Map 中,并将它们的值作为 Map 的键,然后使用一个循环遍历子级数组,每次取出一个子级元素,找到它在 Map 中对应的父级元素,并将该子级元素添加到父级元素的子节点列表中。
以下是一个简单的 Java 代码实现:
```
public static List<TreeNode> buildTree(String[] parents, String[] children) {
Map<String, TreeNode> map = new HashMap<>();
// 将父级数组和子级数组中的每个元素都放入 Map 中
for (String parent : parents) {
map.put(parent, new TreeNode(parent));
}
for (String child : children) {
map.put(child, new TreeNode(child));
}
// 遍历子级数组,将子级元素添加到对应的父级元素的子节点列表中
for (String child : children) {
String parent = parents[Arrays.asList(children).indexOf(child)];
TreeNode parentNode = map.get(parent);
TreeNode childNode = map.get(child);
parentNode.addChild(childNode);
}
// 找到根节点
List<TreeNode> roots = new ArrayList<>();
for (TreeNode node : map.values()) {
if (node.getParent() == null) {
roots.add(node);
}
}
return roots;
}
```
其中,TreeNode 是一个节点类,包含一个值和它的子节点列表,以及一个指向父节点的引用。
```
public class TreeNode {
private String value;
private List<TreeNode> children;
private TreeNode parent;
public TreeNode(String value) {
this.value = value;
this.children = new ArrayList<>();
this.parent = null;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public List<TreeNode> getChildren() {
return children;
}
public void setChildren(List<TreeNode> children) {
this.children = children;
}
public TreeNode getParent() {
return parent;
}
public void setParent(TreeNode parent) {
this.parent = parent;
}
public void addChild(TreeNode child) {
this.children.add(child);
child.setParent(this);
}
}
```
这个函数的输入是一个父级数组和一个子级数组,输出是一个树形结构,每个节点包含一个值和它的子节点列表。如果一个节点没有父节点,它就是根节点。
阅读全文