问题是,给定一个祖先矩阵,作为1和0的位图,构造相应的二叉树。任何人都可以告诉我如何做到这一点?我在Stackoverflow找到了一个解决方案,但是行a[root->data][temp[i]]=1
似乎错了,没有绑定节点将包含数据1到n。它可能包含,比方说2000,在这种情况下,将没有a[2000][some_column]
,因为只有7个节点,因此矩阵中有7个行和列。
答案 0 :(得分:1)
两种方式:
规范化您的节点值,使其全部从1到n
。例如,如果您有节点1, 2, 5000
,请将它们设为1, 2, 3
。您可以通过对标签进行排序或散列并保留normalized[i] = normalized value of node i
之类的内容来完成此操作。如果你有非常大的标签甚至文字标签,normalized
可以是地图/哈希表。
您可能可以使用sparse matrix,可以使用哈希表或集合实现:保留哈希表的哈希表。 H[x]
存储另一个存储y
值的哈希表。因此,如果您使用a[2000][5000] = 1
的天真矩阵解决方案,则可以使用H.get(2000)
=>返回存储在第2000行=>的值的哈希表H'
。 H'.get(5000)
=>返回您想要的值。