我在一个列表中有一个字符串路径集合,比如"x1/x2/x3“、"x1/x2/x4”、"x1/x5“。我需要从这个列表中构造一个树状结构,它可以迭代得到一个漂亮的打印树。像这样
x1
/ \
x5 x2
/ \
x3 x4
有什么想法/建议吗?我相信这个问题可以首先通过处理字符串列表编辑来解决:选择的正确答案是一个优雅的实现,其他建议也很好。
发布于 2009-06-17 07:22:28
只需按其分隔符拆分每条路径,然后将它们逐个添加到树结构中。
即,如果'x1'
不存在,则创建此节点;如果存在,则转到该节点并检查是否有子'x2'
,依此类推……
发布于 2009-06-17 07:21:12
我会让这棵树一根一根。
创建一个空树(它有一个根节点-我假设可能有一个类似于“x7/x8/x9”的路径)。
获取第一个字符串,将x1添加到根节点,然后将x2添加到x1,然后将x3添加到x2。
获取第二个字符串,看到x1和x2已经存在,将x4添加到x2。
对你拥有的每一条路径都这样做。
发布于 2018-03-17 23:59:35
为数组中的每个字符串创建树。只需为'/‘拆分路径,检查该节点是否存在于您的树中,如果存在,则继续...否则,创建一个新节点,并将此节点添加到父节点的子节点中。
使用递归进行迭代。
下面是树节点的模型。
Class Node{
string name;
List<Node> childrens;
Node(string name){
this.name = name;
this.childrens = new List<Node>();
}
}
https://stackoverflow.com/questions/1005551
复制相似问题