Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 根据某些选择条件在树中查找节点_Algorithm - Fatal编程技术网

Algorithm 根据某些选择条件在树中查找节点

Algorithm 根据某些选择条件在树中查找节点,algorithm,Algorithm,我有一棵像上面那样的树。这是一个不平衡的N个子树。问题是,我需要根据某些条件选择一个节点。像 [BASE] / \ \ C1 C2 C3 /\ \ C4 C5 C6 程序的输入将是键值对的仲裁长度,如输入为-k1=a,k2=b,k3=c,k8=10-我应选择C4,因为这是最佳匹配 理想情况下,我考虑遍历树,对

我有一棵像上面那样的树。这是一个不平衡的N个子树。问题是,我需要根据某些条件选择一个节点。像

                 [BASE]
                 / \  \
                C1  C2 C3
                /\       \
               C4 C5      C6
程序的输入将是键值对的仲裁长度,如输入为-
k1=a,k2=b,k3=c,k8=10
-我应选择
C4
,因为这是最佳匹配


理想情况下,我考虑遍历树,对于每个节点,都有一个选择标准,可以与输入集匹配。但很快我就明白了,这棵树可能非常巨大,基本节点下可能有成千上万的子节点。因此,逐点进行可能不是一个好主意。如果有一种方法可以更有效地选择节点,我很想知道。

看起来您的k指向目录结构,而此结构的叶(每个目录正好有一个叶)就是您要查找的节点。您可以将此字符串作为另一个值保留在节点中。问题中不清楚的是k与树的关系如何 例如

Select C1 when k1 = a
Select C4 when K1 = a and K2=b and K3=C
Select C5 when k1 = a and k'=z

Select C2 when K'' = b
Select C3 when k5 = 9
Select C6 when k5=9 and k6 = 10

我找到了这样一个可行的解决办法

a->c1
a/b/c->c4

让我们称之为条件表。每列表示输入序列(k),对于不同的值组合,有一个节点要选择。此表可以看作是内存中的数据结构或RDBMS中的实表。

请解释您的符号。K和“?每个节点的选择标准是根据键/值对定义的,我试图将其描述为k1=a,其中k1是键的名称,“a”是值。如果某个属性在某个节点上保持不变,那么相同的属性将在其子节点上保持不变?我在这棵树上看不到合适的结构,这棵树是根据什么条件建造的?它与键/值对有何关系?
----------------------------------------
|rowId|param1|param2|param3|param4|node|
----------------------------------------
|10   | a   |      |      |      | C1  |
----------------------------------------
|14   | a   | b    |  c   |      | C4  |
----------------------------------------
|18   | a   | b    |      |      | C5  |
----------------------------------------