问题是,给定一棵二叉树,其中每个节点有四个数据:left
,right
,data
和一个空指针parent
,我们必须更新树,使parent
每个节点的指针指向它的父节点(根父指针自然会指向为 NULL 值)。现在我该怎么做?我尝试了这样的后序遍历:
last = None
def mypostorder(root):
if root:
mypostorder(root.left)
mypostorder(root.right)
if last:
last.parent = root
last = root
但显然它不起作用,我知道为什么在更新parent
左孩子的指针后,它将它设置为last
,所以下次当它访问右孩子(它的兄弟姐妹)时,它会将其设置parent
为左孩子. 如何调整它以获得正确的结果?是否也可以使用堆栈迭代地执行此操作?