python给出一棵二叉搜索树(没有相同元素), 请输出其删除部分元素之后的层序遍历序列。
时间: 2024-03-22 16:42:06 浏览: 46
二叉搜索树的后序遍历序列
好的,我理解了你的问题。以下是 Python 代码实现:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def levelOrder(root):
if not root:
return []
res = []
q = [root]
while q:
level = []
for i in range(len(q)):
node = q.pop(0)
level.append(node.val)
if node.left:
q.append(node.left)
if node.right:
q.append(node.right)
res.append(level)
return res
def deleteNode(root, key):
if not root:
return None
if root.val == key:
if not root.left:
return root.right
if not root.right:
return root.left
left_max = root.left
while left_max.right:
left_max = left_max.right
root.val = left_max.val
root.left = deleteNode(root.left, left_max.val)
elif root.val > key:
root.left = deleteNode(root.left, key)
else:
root.right = deleteNode(root.right, key)
return root
# 示例输入
# [5,3,6,2,4,null,7]
# 3
root = TreeNode(5)
root.left = TreeNode(3)
root.right = TreeNode(6)
root.left.left = TreeNode(2)
root.left.right = TreeNode(4)
root.right.right = TreeNode(7)
key = 3
root = deleteNode(root, key)
res = levelOrder(root)
print(res)
```
示例输出:
```
[[5], [2, 6], [4, 7]]
```
以上代码中,我们定义了一个 `TreeNode` 类来表示二叉树的每个节点,其中 `val` 表示节点的值,`left` 和 `right` 分别表示左右子节点。`levelOrder` 函数用于按层序遍历输出二叉树的节点值。`deleteNode` 函数用于删除二叉搜索树中的指定节点,并返回删除后的根节点。最后,我们使用示例输入构建一棵二叉搜索树,并删除值为 3 的节点,然后输出删除后的层序遍历序列。
阅读全文