Java递归查询树节点的父节点和子节点

本文介绍如何使用Java递归查询树节点的父节点和子节点,并提供详细代码示例和解释。

1. 创建树节点类

首先,创建一个树节点类 TreeNode,包含节点数据、子节点列表和父节点引用:javaimport java.util.ArrayList;import java.util.List;

class TreeNode { private String data; private List children; private TreeNode parent;

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 findChildren(TreeNode node) { List children = new ArrayList<>(); for (TreeNode child : node.getChildren()) { children.add(child); children.addAll(findChildren(child)); } return children;}

该方法从目标节点开始,递归遍历所有子节点,并将它们添加到一个列表中,最终返回包含所有子节点的列表。

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递归查询树节点的父节点和子节点,并提供了详细代码示例和解释。递归是一种处理树形结构数据的常用方法,可以方便地遍历所有节点并进行相关操作。

Java递归查询树节点的父节点和子节点

原文地址: https://www.cveoy.top/t/topic/i7C 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录