python数据结构完全二叉树添加节点
时间: 2023-11-26 21:48:22 浏览: 71
完全二叉树是一种特殊的二叉树,它的所有叶子节点都在同一层上,除了最后一层,其他层的节点数都是满的。在完全二叉树中,新节点应该从最后一层的最左边开始添加,如果最后一层已经满了,则新节点应该添加到下一层的最左边。下面是Python实现完全二叉树添加节点的示例代码:
```python
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
class CompleteBinaryTree:
def __init__(self):
self.root = None
def add_node(self, val):
new_node = Node(val)
if not self.root:
self.root = new_node
return
queue = [self.root]
while queue:
cur_node = queue.pop(0)
if not cur_node.left:
cur_node.left = new_node
return
elif not cur_node.right:
cur_node.right = new_node
return
else:
queue.append(cur_node.left)
queue.append(cur_node.right)
```
在这个示例代码中,我们定义了一个Node类来表示二叉树的节点,以及一个CompleteBinaryTree类来表示完全二叉树。在add_node方法中,我们首先创建一个新节点,然后判断根节点是否为空,如果为空,则将新节点设置为根节点。如果根节点不为空,则将根节点添加到队列中,然后进行循环。在循环中,我们从队列中弹出当前节点,然后检查它的左右子节点是否为空。如果左子节点为空,则将新节点添加为左子节点,否则,如果右子节点为空,则将新节点添加为右子节点。如果左右子节点都不为空,则将左右子节点添加到队列中,以便在下一次循环中处理它们。
阅读全文