【发布时间】:2017-05-14 16:10:43
【问题描述】:
我有一个名为TrieNode 的类,它有一个char 键和triNode 的arrayList。我正在尝试实现一个 trie。
结构:
例如,根键是 '.'孩子是 t,o,s 和 p。对于键为“s”的节点,子节点是 t 和 p。我想计算树中的节点数。我用过这个算法
public int size(TrieNode tmp, int n){
if(tmp.children.isEmpty()){
return 0;
}
for(int i=0;i<tmp.children.size();i++){
return 1 + size(tmp.children.get(i), n);
}
return 1;
}
问题是 i 对于每个调用都不是唯一的。因此该方法在根上调用,然后是 s,然后是子 t,然后是 t,然后是 o,直到 p。当它再次返回到 s 时,它不会调用 p 上的方法。
如何解决这个问题?
【问题讨论】:
-
为什么要混合递归和循环?
-
因为我想遍历数组列表以便在所有节点上调用我的方法。
-
@Aominè 为什么不呢?如果你有一棵树并且需要在每个节点上递归,我认为循环遍历给定节点的所有子节点并在每个节点上递归是可以的
-
你的 for 循环有一个 return 语句。只访问第一个孩子。
标签: java