所以我正在构建这个树,它有1.*个节点,每个节点都有一个列表,这个列表本身可以有1.*个节点。
树的前三个层次我可以很好地构建,但如果我不编写所有层次的代码,它就不会更好地工作,因为这些层次都很愚蠢。解决方法当然是使用某种递归方法和一个BFS。
基本上,在我的TreeBuilder类中,我希望能够调用Tree.GetNodeSatDepth(深度))
并获得该深度的所有节点的列表。问题是我不理解如何实现GetNodeSatDepth(深度)
方法。
我找到的所有例子都是关于二叉树的。另一种方法是让addChild方法使用一个深度参数,这样我就可以指定在哪个深度插入子元素。
最终,这就是我想要的:我有一棵有根的树。根有一个包含4个子节点的列表。我想要那四个孩子。为每个子节点生成三个节点。所以对于子0有3个子,子1有3个子,子3有3个子,子4有3个子。等等
也许一个可能的解决方案是在每个节点上都有一个level属性,然后搜索该节点,然后返回它的父节点。因为它的父级应该有一个在搜索节点处的所有节点的列表。
试试这个方法:
static void getNodesAtDepth(Node root, int currentLevel, int level, List<Node> nodes) {
if(root == null) return;
if(level == 0) {
nodes.add(root);
return;
}
if(currentLevel + 1 == level) {
if(root.getNodeList() != null) {
nodes.addAll(root.getNodeList());
}
}
if(currentLevel < level) {
if(root.getNodeList() != null) {
for(Node node : root.getNodeList()) {
getNodesAtDepth(node, currentLevel + 1, level , nodes);
}
}
}
}
如何使用:
List<Node> nodeList = new LinkedList<>();
getNodesAtDepth(root, 0, 2, nodeList);
root
当然是树的根。nodeList
将在所需级别存储所有节点(在我的例子中是2)。第二个参数始终为0
,(用于跟踪当前级别)
问题内容: 我有一个对象A的列表。此列表中的每个对象A都包含对象B的列表,而对象B包含对象C的列表。对象C包含一个属性名称,我想使用它使用Java 8进行过滤。 如何使用流在Java 8中编写以下代码以避免嵌套循环: 问题答案: 您可以使用两个,然后使用a,然后可以选择第一个,或者如果没有结果返回:
我有一个对象列表A。此列表中的每个对象A都包含对象B的列表,对象B包含对象C的列表。对象C包含一个属性名称,我想使用java 8进行过滤。 如何使用流在java8中编写下面的代码以避免嵌套循环:
问题内容: 如何获取Python给定目录中所有文件(和目录)的列表? 问题答案: 这是遍历目录树中每个文件和目录的一种方式:
问题内容: 我有一个带有字段的“页面”对象列表。此父字段引用列表中的另一个对象。我想基于此字段从此列表创建树层次结构。 这是我原始列表的样子: 我想将其转换为这样的树结构: 我希望可以在任何时候针对任意列表调用的可重用函数。有人知道解决这个问题的好方法吗?任何帮助或建议,将不胜感激! 问题答案: 小提琴
目标是发送一个HTTP GET请求,其中包含表示枚举值的字符串列表问卷主题,然后使用这些参数选择正确主题的问题。我还添加了一个自定义转换器来将接收到的字符串转换为我的枚举。我的问题是当我在方法中调试时,“主题”总是为空。 这是我当前的RESTendpoint: 当我通过带有以下签名的方法传递单个主题时,我能够得到我的问题: 因此,将字符串转换为枚举似乎不是问题。 我尝试发送多个请求,但在endpo
我有一个使用flowless项目的JavaFX列表。但是我得到了一个奇怪的边框(我没有启用任何边框,并且强制边框具有width=0px),它存在并且具有渐变效果: 当我将单元格background-inset设置为-1时,边框就没有了,所以我相信这个问题与背景有关。虽然这不是一个解决方案,因为如果我启用了边框(这是我想要的),渐变效果仍然存在。 有人知道我怎样才能摆脱这个边界吗? 谢谢!