请用Java代码实现家谱管理系统删除结点方法
时间: 2023-10-13 08:04:51 浏览: 88
好的,以下是Java代码实现家谱管理系统删除结点方法的示例:
```
public class Genealogy {
/* 家谱管理系统的类定义 */
public static void main(String[] args) {
// 初始化家谱结构
Node grandpa = new Node("grandpa");
Node father = new Node("father");
grandpa.addChild(father);
Node uncle = new Node("uncle");
grandpa.addChild(uncle);
Node son = new Node("son");
father.addChild(son);
// 显示原有家谱结构
System.out.println("原有家谱结构:");
grandpa.showAllDescendants();
// 删除指定结点
Node target = father;
boolean deleted = grandpa.deleteChild(target);
if (deleted) {
System.out.println("删除结点成功,现有家谱结构:");
grandpa.showAllDescendants();
} else {
System.out.println("删除结点失败,原有家谱结构:");
grandpa.showAllDescendants();
}
}
}
class Node {
/* 家谱结点的类定义 */
private String name;
private List<Node> children;
public Node(String name) {
this.name = name;
this.children = new ArrayList<>();
}
public void addChild(Node child) {
this.children.add(child);
}
public boolean deleteChild(Node child) {
return this.children.remove(child);
}
public void showAllDescendants() {
System.out.println(this.name);
for (Node child : this.children) {
child.showAllDescendants();
}
}
}
```
这是一个基于树形数据结构的家谱管理系统,其中每个结点表示一个人,包括姓名和子孙结点列表。删除结点的方法 `deleteChild()` 通过列表遍历找到指定结点并删除,返回删除是否成功的布尔值。以上代码可以实现基本的家谱管理功能,可以根据需要进行改进和扩展。
阅读全文