构建一颗简单的树

利用java中对象的修改是引用传递

值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//将节点放入map中
Map<String, T> nodeMap = new HashMap<>();

for (TreeNode node : nodeMap.values()) {

if (node.isRoot()) {
continue;
}

String parentKey = node.getParentKey();
if (nodeMap.containsKey(parentKey)) {
/**
* 获取父节点直接添加 利用map的特性直接修改值,后续添加子节点时前面加过的也回修改,
* 最后取到根节点就可以获得整颗树
*/
TreeNode parentNode = nodeMap.get(parentKey);
if (parentNode == null) {
throw new InternalException("生成树失败");
} else {
parentNode.addChildNode(node);
}
}
}

最后取出map中的根节点,就会发现根节点已经是一颗树了