二叉搜索树 - 存储父节点引用

1 投票
1 回答
2698 浏览
提问于 2025-04-17 12:34

我希望有人能帮我,我不是专业的程序员,但我正在用Python学习和实验二叉树。

下面是我写的代码,我尝试在每个节点中存储它父节点的引用,但对于叶子节点(没有子节点的节点)来说,这个方法不太管用。有没有办法在构建树的过程中做到这一点呢?

我还想知道,对于某个节点,它是“左节点”还是“右节点”。我想因为节点是存储在TreeNode.left或TreeNode.right中,所以我可能可以在Python中以n._name_这样的方式获取到这个信息。你能告诉我正确的方法来判断一个节点是左节点还是右节点吗?

我的最终目标是通过层次遍历来可视化我的树。

class TreeNode:
 left, right, data = None, None, 0

def __init__(self,nodeData, left = None, right = None, parent = None):
 self.nodeData = nodeData
 self.left = left
 self.right = right
 self.parent = self

class Tree:
 def __init__(self):
  self.root = None

 def addNode(self, inputData):
  return TreeNode(inputData)

 def insertNode(self, parent, root, inputData):
  if root == None:
   return self.addNode(inputData)
  else:
   root.parent = parent
   if inputData <= root.nodeData:
    root.left = self.insertNode(root, root.left, inputData)
   else:
    root.right = self.insertNode(root, root.right, inputData)
   return root

1 个回答

3

这里有很多问题。因为这是作业,我就给你一个提示。

def __init__(self,nodeData, left = None, right = None, parent = None):
 self.nodeData = nodeData
 self.left = left
 self.right = right
 self.parent = self

为什么 self.parent 没有被设置为 parent 呢?

撰写回答