【问题标题】:Binary Search Tree - storing reference to parent node二叉搜索树 - 存储对父节点的引用
【发布时间】:2012-02-08 10:23:03
【问题描述】:

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

【问题讨论】:

  • class TreeNode: left, right, data = None, None, 0 并没有按照你的想法去做。这三个变量不是每个节点的一部分。你需要找到更好的 Python 教程。
  • 请用homework标记你的作业。

标签: python data-structures recursive-datastructures


【解决方案1】:

这有很多很多问题。既然是作业,我就给点提示吧。

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

【讨论】:

  • 您好,感谢您的回复。这不是家庭作业,因为它只是一个个人项目。再次感谢,Alex 感谢您的提示。我很想知道您认为代码有什么问题。
  • Codereview.stackexchange.com 是进行完整代码审查的更好地方。然而。类级变量class TreeNode: left, right, data = None, None, 0 在这段代码中是无用的。而def addNode( self, inputData) 的名字很糟糕。而insertNode 的实现是错误的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-24
  • 1970-01-01
相关资源
最近更新 更多