创建名为shixun2_3.py的文件,在文件中定义两个类,一个是二叉树的结点类,该类包含结点的相关信息(如结点的值和左、右子树);另一个是二叉树的类,该类包含二叉树的定义及其宽度优先遍历操作。请通过以下步骤测试二叉树宽度优先遍历算法的实现是否正确。 ⑴初始化一个结点。 ⑵以⑴中结点作为根结点并使用链式存储结构,用循环体递归创建一棵二叉树,输入quit停止生成树。 ⑶对二叉树执行层次遍历,并将所得序列输出。
时间: 2023-12-03 07:45:04 浏览: 82
shixun3.c
以下是代码实现:
```python
class BinaryTreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
class BinaryTree:
def __init__(self):
self.root = None
def createTree(self):
val = input("请输入结点的值,quit停止输入: ")
if val == "quit":
return
self.root = BinaryTreeNode(val)
queue = []
queue.append(self.root)
while queue:
node = queue.pop(0)
left_val = input("请输入" + node.val + "的左子结点的值,quit停止输入: ")
if left_val != "quit":
node.left = BinaryTreeNode(left_val)
queue.append(node.left)
right_val = input("请输入" + node.val + "的右子结点的值,quit停止输入: ")
if right_val != "quit":
node.right = BinaryTreeNode(right_val)
queue.append(node.right)
def levelOrderTraversal(self):
if not self.root:
return []
res = []
queue = [self.root]
while queue:
level = []
for i in range(len(queue)):
node = queue.pop(0)
level.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(level)
return res
```
以下是测试代码:
```python
tree = BinaryTree()
tree.createTree()
print(tree.levelOrderTraversal())
```
在运行测试代码时,按照提示输入结点的值和左右子结点的值,最后输入quit停止输入。程序会输出层次遍历后的二叉树序列。
阅读全文