我有4个二维数:(1,0),(0,1),(0,-1),(-1,1)。我想用n代构建树状结构,并为每条路径获取结果。对于n = 2,例如,4 ^ n = 16条路径之一的结果将是(1,0)+(0,1)=(1,1)。
我会知道如何以一定数量的世代来实现,但是不知道如何创建具有类似数量的世代的树状结构。我通常只需要为每个世代经历一个for循环,但是我不知道如何为n世代自动添加n个for循环。
如果有人可以在这里帮助我,那会很好。 (我正在使用Java)。
编辑:我只搜索结果为(0,n)的路径,因此,如果有人知道比提到的算法更有效的算法,那么听到它们也将很不错
答案 0 :(得分:0)
进行编辑的答案:您可能会使用某种列表,在创建节点时检查其值是否满足您的条件,如果满足,则将其添加到列表中。 (整个节点,而不仅仅是值)。 如果将树双链接(因此,如果子代有指向父代的指针),则可以沿相反的方向遍历树,直到根。 这为您提供了路径,您只需将其上下颠倒即可。
您可以使用适当的树结构,其中每个节点具有4个子代,1个父代,一个值和一个深度。因此,要计算某个节点的新子代的值,您只需将这些向量添加到当前值中,它们的深度当然会比其父代的深度大一。要填充树,我建议使用递归方法调用,并根据深度决定破坏条件。
但是我不确定您要实现什么。