我的树有以下节点规范:
java.util.TreeMap<Long id, java.util.TreeMap children>
当我填写此地图时,我想仅通过id来解除子树。
E.G。 树是:
/-4
/-2
1 < /-5
\-3<
\-6
当我使用ID = 3的代码时,我想只返回带有parentNode = 3的TreeMap
感谢您的建议
答案 0 :(得分:3)
您需要树的搜索算法。递归很容易。您应该在根节点中找到所有子节点并为每个子节点调用相同的方法,直到找到具有您需要的ID的节点并将其返回。
Here和here您可以找到示例。不同之处在于你正在使用地图,但这并不重要。想法是一样的。
答案 1 :(得分:1)
你只需要那个子树吗?或者所有节点都大于3? TreeMap
的目的是按键排序地图, NOT 将其用作临时树数据结构。它甚至不是由二叉搜索树支持,而是由红黑树支持。
要获得密钥大于或等于给定密钥的所有节点,您可以使用TreeMap.TailMap。
答案 2 :(得分:0)
通常,只要树不是二叉搜索树,就必须递归地探索树(深度优先或广度优先),并返回id等于所需值的节点。
我同意TreeMap可能不是实现二叉树的最佳方式。