我有一个可能很大的有根树结构,我想将其转换为一个X * Y
矩阵,X
它是树中的叶子Y
数量和树中度数大于 1 的节点数量,即根节点和内部节点。矩阵应该这样填充:
M i,j = {0
如果叶子i
有祖先j
,否则为 1
例如,这棵树:
--A
/
1 B
/ \ /
/ 3
/ \
0 C
\
\ --D
\ /
2
\--E
将转化为这个矩阵:
0 1 2 3
A T T F F
B T T F T
C T T F T
D T F T F
E T F T F
由于树可能会变得非常大(可能约为 100,000 片叶子),我想知道是否有一种比遍历每个叶子节点的树更智能/更快的方法。感觉好像某种算法在这个问题的某个地方,但我还没有弄清楚。也许有人可以帮忙?
在我的应用程序中,这棵树代表大的系统发育层次结构,因此它不平衡,并且可能有两个以上子节点的节点。