Java树形结构找出属于某一父节点的所有叶子节点
时间: 2024-02-25 11:53:23 浏览: 171
如何获取jtree java中所有父节点的叶节点数
可以使用递归的方式来实现这个功能。具体步骤如下:
1. 首先定义一个方法,传入当前节点和目标父节点的 ID,返回一个 List,表示当前节点下所有符合条件的叶子节点。
2. 如果当前节点是叶子节点,并且它的父节点 ID 等于目标父节点的 ID,那么将当前节点加入到 List 中,并返回。
3. 如果当前节点是非叶子节点,那么遍历它的所有子节点,并将它们的返回值合并到 List 中。
4. 最终返回 List。
下面是一个示例代码,假设你的树节点类名为 TreeNode,包含 id、name、parentId 和 children 四个属性:
```java
public List<TreeNode> findLeaves(TreeNode node, int parentId) {
List<TreeNode> leaves = new ArrayList<>();
if (node.isLeaf() && node.getParentId() == parentId) {
leaves.add(node);
return leaves;
}
for (TreeNode child : node.getChildren()) {
leaves.addAll(findLeaves(child, parentId));
}
return leaves;
}
```
调用这个方法时,传入根节点和目标父节点的 ID 即可:
```java
TreeNode root = ...
int parentId = 123;
List<TreeNode> leaves = findLeaves(root, parentId);
```
阅读全文