各位有没有什么比较好的方式来把"把路径字符串转换成一棵树,并且可以通过输入一个节点把它的子节点全部输出来"。
比如说现在我有以下字符串:
A-B-C-D;
A-B-C-F;
A-B-H;
A-B-G-T;
转换以后就成这个样子:
A
B
C
H
D
F
G
比如说我输入B节点,那么输出的结果就是:
C
H
D
F
G
我现在能想法想到的方法是,对原始数据处理一下。先增加一个root节点,现在我需要查root下的所有子节点。那么就遍历字符串数组A,并且设置level=0,把字符串用"-"分割成数组B,取出B[0]的值并且去重。这些取出来都是第一层的。然后再通过B[0]的值,去找它的子节点。如果递归下去。这是通过root来生成树。
接下来是,通过输入一个节点C,那么在输入的时候,我需要把它的层级一起传过来3|C,这种格式。其它地方和查找root的是一样的。只是把B[0]改成相应的B[3],接下来也是递归。
这种方式的前提是同一层级下,不能有相同的名字。
大家有没有什么比较效率和思路更加清晰的方式呀?
比如说现在我有以下字符串:
A-B-C-D;
A-B-C-F;
A-B-H;
A-B-G-T;
转换以后就成这个样子:
A
B
C
H
D
F
G
比如说我输入B节点,那么输出的结果就是:
C
H
D
F
G
我现在能想法想到的方法是,对原始数据处理一下。先增加一个root节点,现在我需要查root下的所有子节点。那么就遍历字符串数组A,并且设置level=0,把字符串用"-"分割成数组B,取出B[0]的值并且去重。这些取出来都是第一层的。然后再通过B[0]的值,去找它的子节点。如果递归下去。这是通过root来生成树。
接下来是,通过输入一个节点C,那么在输入的时候,我需要把它的层级一起传过来3|C,这种格式。其它地方和查找root的是一样的。只是把B[0]改成相应的B[3],接下来也是递归。
这种方式的前提是同一层级下,不能有相同的名字。
大家有没有什么比较效率和思路更加清晰的方式呀?