我正在尝试编写代码来删除BST的所有节点(每个节点只有三个属性,左,右和数据,没有父指针)。下面的代码是我想出的,它只删除树的右半部分,保持左半部分不变。如何修改它以便也删除左半部分(这样最终我只剩下既没有左子树也没有右子树的根节点)?
def delete(root):
global last
if root:
delete(root.left)
delete(root.right)
if not (root.left or root.right):
last = root
elif root.left == last:
root.left = None
else:
root.right = None
其次,任何人都可以建议使用堆栈或其他相关数据结构的迭代方法吗?