判断一棵树是否为完全二叉树python代码及主程序
时间: 2023-06-08 13:06:42 浏览: 116
以下是Python代码实现:
```python
class Node:
def __init__(self, value=None, left=None, right=None):
self.value = value
self.left = left
self.right = right
def is_complete_tree(root):
queue = [] # 用来存储节点的队列
if root is None:
return True
# 判断是否遇到了一个没有左/右孩子的节点
flag = False
queue.append(root)
while queue:
node = queue.pop(0)
if node.left: # 左孩子不为空
if flag:
return False # 已经遇到过没有左/右孩子的节点,当前节点不应该有左孩子
queue.append(node.left)
else: # 左孩子为空
flag = True
if node.right: # 右孩子不为空
if flag:
return False # 已经遇到过没有左/右孩子的节点,当前节点不应该有右孩子
queue.append(node.right)
else: # 右孩子为空
flag = True
return True
# 测试
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
root.right.left = Node(6)
print(is_complete_tree(root)) # True
root.right.right = Node(7)
print(is_complete_tree(root)) # True
root.left.left.left = Node(8)
print(is_complete_tree(root)) # False
```
主程序中创建了一个二叉树,并对其调用is_complete_tree函数进行完全二叉树的判断。
阅读全文