Python 更新二叉树中的父指针

Python 更新二叉树中的父指针,python,algorithm,binary-tree,Python,Algorithm,Binary Tree,问题是,给定一个二叉树,其中每个节点都有四段数据:左,右,数据和一个空指针父,我们必须更新树,使每个节点的父指针指向其父(根父指针自然会指向空值)。现在我该怎么做?我尝试了如下的后序遍历: last = None def mypostorder(root): if root: mypostorder(root.left) mypostorder(root.right) if last: last.parent = root

问题是,给定一个二叉树,其中每个节点都有四段数据:
数据
和一个空指针
,我们必须更新树,使每个节点的
指针指向其父(根父指针自然会指向空值)。现在我该怎么做?我尝试了如下的后序遍历:

last = None
def mypostorder(root):
    if root:
      mypostorder(root.left)
      mypostorder(root.right)
      if last:
        last.parent = root
      last = root

但显然它不起作用,我知道为什么在更新左孩子的
parent
指针后,它会将其设置为
last
,因此下次访问右孩子(其兄弟姐妹)时,它会将其
parent
设置为左孩子。如何调整它以获得正确的结果?也可以使用堆栈进行迭代吗?

您的操作方式可能有误。我认为您的解决方案将使节点的父节点指向其子节点

尝试一下:

def myPostOrder(root, par=None):
    if root:
        root.parent = par
        myPostOrder(root.left, root)
        myPostOrder(root.right, root)

你走错方向了。我认为您的解决方案将使节点的父节点指向其子节点

尝试一下:

def myPostOrder(root, par=None):
    if root:
        root.parent = par
        myPostOrder(root.left, root)
        myPostOrder(root.right, root)
初始调用:
setParent(root,NULL)


初始调用:
setParent(root,NULL)

我刚才评论说它不是用python编写的解决方案(算法是正确的,这就是为什么我给了你+1)。不过,这可能是我的家庭作业,所以我完全支持用非目标语言表达算法我希望我没有冒犯你。我从没想过你听起来很粗鲁。我沉思不止else@inspectorG4dget,这不是一个家庭作业问题。我没有进入学校或大学,我是一名专业人士,我的工作除了这些以外,什么都涉及。这纯粹是出于学术兴趣,我试图解决它,但无法解决,所以请求帮助。不知道你怎么会认为这是家庭作业。当有人不努力在这里发帖的时候,它被贴上了家庭作业的标签。在这里,我尝试了一些东西,失败了,于是问。你凭什么认为这是家庭作业?@axiom,没关系。无论如何,谢谢你。语言很琐碎,我很想知道怎么做。C很好…@Cupidvogel:首先,如果我以某种方式冒犯了你,我很抱歉-这不是我的本意。如果你的意思是家庭作业问题被贴上了家庭作业标签,那你就错了。我觉得你这么做完全是出于兴趣,这太好了,我为你鼓掌。我只提到过这可能是家庭作业,因为它很可能是家庭作业问题的一部分——我以前在这里见过这样的问题。我只是评论说,这不是用python编写的解决方案(算法是正确的,这就是为什么我给你一个+1)。不过,这可能是我的家庭作业,所以我完全支持用非目标语言表达算法我希望我没有冒犯你。我从没想过你听起来很粗鲁。我沉思不止else@inspectorG4dget,这不是一个家庭作业问题。我没有进入学校或大学,我是一名专业人士,我的工作除了这些以外,什么都涉及。这纯粹是出于学术兴趣,我试图解决它,但无法解决,所以请求帮助。不知道你怎么会认为这是家庭作业。当有人不努力在这里发帖的时候,它被贴上了家庭作业的标签。在这里,我尝试了一些东西,失败了,于是问。你凭什么认为这是家庭作业?@axiom,没关系。无论如何,谢谢你。语言很琐碎,我很想知道怎么做。C很好…@Cupidvogel:首先,如果我以某种方式冒犯了你,我很抱歉-这不是我的本意。如果你的意思是家庭作业问题被贴上了家庭作业标签,那你就错了。我觉得你这么做完全是出于兴趣,这太好了,我为你鼓掌。我只提到这可能是家庭作业,因为它很可能是家庭作业问题的一部分——我以前在这里见过这样的问题。