从给定的二叉树创建祖先矩阵

时间:2012-10-19 14:50:25

标签: algorithm data-structures binary-tree

问题是,给定一个祖先矩阵,作为1和0的位图,构造相应的二叉树。任何人都可以告诉我如何做到这一点?我在Stackoverflow找到了一个解决方案,但是行a[root->data][temp[i]]=1似乎错了,没有绑定节点将包含数据1到n。它可能包含,比方说2000,在这种情况下,将没有a[2000][some_column],因为只有7个节点,因此矩阵中有7个行和列。

1 个答案:

答案 0 :(得分:1)

两种方式:

  1. 规范化您的节点值,使其全部从1到n。例如,如果您有节点1, 2, 5000,请将它们设为1, 2, 3。您可以通过对标签进行排序或散列并保留normalized[i] = normalized value of node i之类的内容来完成此操作。如果你有非常大的标签甚至文字标签,normalized可以是地图/哈希表。

  2. 您可能可以使用sparse matrix,可以使用哈希表或集合实现:保留哈希表的哈希表。 H[x]存储另一个存储y值的哈希表。因此,如果您使用a[2000][5000] = 1的天真矩阵解决方案,则可以使用H.get(2000) =>返回存储在第2000行=>的值的哈希表H'H'.get(5000) =>返回您想要的值。