Java递归查询树节点的父节点和子节点
Java递归查询树节点的父节点和子节点
本文介绍如何使用Java递归查询树节点的父节点和子节点,并提供详细代码示例和解释。
1. 创建树节点类
首先,创建一个树节点类 TreeNode,包含节点数据、子节点列表和父节点引用:javaimport java.util.ArrayList;import java.util.List;
class TreeNode { private String data; private List
public TreeNode(String data) { this.data = data; this.children = new ArrayList<>(); }
public String getData() { return data; }
public List<TreeNode> getChildren() { return children; }
public TreeNode getParent() { return parent; }
public void setParent(TreeNode parent) { this.parent = parent; }
public void addChild(TreeNode child) { children.add(child); child.setParent(this); }
public void removeChild(TreeNode child) { children.remove(child); child.setParent(null); }}
2. 递归查询父节点
使用递归方法 findParent 查询目标节点的父节点:javaprivate static TreeNode findParent(TreeNode node, TreeNode targetNode) { if (node == targetNode) { return node.getParent(); } else { for (TreeNode child : node.getChildren()) { TreeNode parent = findParent(child, targetNode); if (parent != null) { return parent; } } return null; }}
该方法从根节点开始,递归遍历每个子节点。如果当前节点是目标节点,则返回其父节点;否则,继续递归查找,直到找到目标节点或遍历完所有节点。
3. 递归查询子节点
使用递归方法 findChildren 查询目标节点的所有子节点:javaprivate static List
该方法从目标节点开始,递归遍历所有子节点,并将它们添加到一个列表中,最终返回包含所有子节点的列表。
4. 示例代码
以下是一个完整的示例代码,演示如何创建树结构、查询目标节点的父节点和子节点:javapublic class Main { public static void main(String[] args) { // 创建树结构 TreeNode root = new TreeNode('Root');
TreeNode node1 = new TreeNode('Node 1'); TreeNode node2 = new TreeNode('Node 2'); TreeNode node3 = new TreeNode('Node 3');
TreeNode subNode1 = new TreeNode('Sub Node 1'); TreeNode subNode2 = new TreeNode('Sub Node 2');
root.addChild(node1); root.addChild(node2); root.addChild(node3);
node2.addChild(subNode1); node2.addChild(subNode2);
// 查询父节点和子节点 TreeNode targetNode = subNode1; TreeNode parentNode = findParent(root, targetNode); List<TreeNode> childNodes = findChildren(targetNode);
// 打印结果 System.out.println('Parent Node: ' + (parentNode != null ? parentNode.getData() : 'Not Found')); System.out.println('Child Nodes:'); for (TreeNode child : childNodes) { System.out.println(child.getData()); } }
// ... (findParent 和 findChildren 方法代码)}
总结
本文介绍了如何使用Java递归查询树节点的父节点和子节点,并提供了详细代码示例和解释。递归是一种处理树形结构数据的常用方法,可以方便地遍历所有节点并进行相关操作。
原文地址: https://www.cveoy.top/t/topic/i7C 著作权归作者所有。请勿转载和采集!