二进制搜索树 - 存储对父节点的引用

时间:2012-02-08 10:23:04

标签: python data-structures recursive-datastructures

我希望有人可以帮助我,我不是编程专家,但我正在使用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 个答案:

答案 0 :(得分: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