请用python语言完成一下要求:依次删除一棵树的叶节点,直到整棵树删完,输入就是删除的顺序,输出这棵树的先序遍历
时间: 2023-12-17 21:03:09 浏览: 17
可以使用树的后序遍历来实现依次删除叶节点的操作,然后再输出先序遍历。具体实现可以参考以下代码:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def postorder(root, res):
if not root:
return
postorder(root.left, res)
postorder(root.right, res)
if not root.left and not root.right:
res.append(root.val)
root = None
def preorder(root):
if not root:
return []
stack, res = [root], []
while stack:
node = stack.pop()
res.append(node.val)
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)
return res
if __name__ == '__main__':
# 构造一棵树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
root.right.left = TreeNode(6)
root.right.right = TreeNode(7)
# 删除叶节点
res = []
postorder(root, res)
# 输出先序遍历
print(preorder(root))
```
运行结果如下:
```
[1, 2, 4, 5, 3, 6, 7]
```