利用双亲存储结构建立树的增删改查的的代码
时间: 2023-12-08 13:05:17 浏览: 29
以下是基于双亲存储结构的树的增删改查的Python代码实现:
```python
class TreeNode:
def __init__(self, data, parent=None):
self.data = data
self.parent = parent
self.children = []
def add_child(self, child_node):
child_node.parent = self
self.children.append(child_node)
def remove_child(self, child_node):
child_node.parent = None
self.children.remove(child_node)
def get_level(self):
level = 0
p = self.parent
while p:
level += 1
p = p.parent
return level
def print_tree(self):
spaces = ' ' * self.get_level() * 2
prefix = spaces + "|__" if self.parent else ""
print(prefix + self.data)
if self.children:
for child in self.children:
child.print_tree()
def search(self, data):
if self.data == data:
return self
for child in self.children:
found = child.search(data)
if found:
return found
return None
def add_node(self, data, parent_data):
parent = self.search(parent_data)
if not parent:
return False
else:
new_node = TreeNode(data, parent)
parent.add_child(new_node)
return True
def remove_node(self, data):
node_to_remove = self.search(data)
if not node_to_remove:
return False
else:
parent = node_to_remove.parent
if node_to_remove.children:
for child in node_to_remove.children:
parent.add_child(child)
child.parent = parent
parent.remove_child(node_to_remove)
return True
```
在上述代码中,我们定义了一个`TreeNode`类,用于表示树的节点。每个节点包含了节点数据、父节点、子节点等信息,并且可以实现节点的添加、删除、搜索、打印等功能。其中,`add_node`方法可以向树中添加一个新节点,`remove_node`方法可以从树中删除一个节点,`search`方法可以在树中查找指定数据的节点,`print_tree`方法可以按照层次结构打印整棵树。
使用方法示例:
```python
root = TreeNode("root")
root.add_node("child1", "root")
root.add_node("child2", "root")
root.add_node("child3", "root")
root.children[0].add_node("grandchild1", "child1")
root.children[0].add_node("grandchild2", "child1")
root.print_tree() # 打印整棵树
root.remove_node("child2")
root.print_tree() # 打印删除节点后的树
```