Java的。通过父节点检索子树

时间:2012-01-16 08:39:29

标签: java algorithm tree

我的树有以下节点规范:

java.util.TreeMap<Long id, java.util.TreeMap children>

当我填写此地图时,我想仅通过id来解除子树。

E.G。 树是:

     /-4
   /-2
1 <    /-5
   \-3<
       \-6

当我使用ID = 3的代码时,我想只返回带有parentNode = 3的TreeMap

感谢您的建议

3 个答案:

答案 0 :(得分:3)

您需要树的搜索算法。递归很容易。您应该在根节点中找到所有子节点并为每个子节点调用相同的方法,直到找到具有您需要的ID的节点并将其返回。
Herehere您可以找到示例。不同之处在于你正在使用地图,但这并不重要。想法是一样的。

答案 1 :(得分:1)

你只需要那个子树吗?或者所有节点都大于3? TreeMap的目的是按键排序地图, NOT 将其用作临时树数据结构。它甚至不是由二叉搜索树支持,而是由红黑树支持。

要获得密钥大于或等于给定密钥的所有节点,您可以使用TreeMap.TailMap

答案 2 :(得分:0)

通常,只要树不是二叉搜索树,就必须递归地探索树(深度优先或广度优先),并返回id等于所需值的节点。

我同意TreeMap可能不是实现二叉树的最佳方式。