Двоичное дерево поиска - хранение ссылки на родительский узел - PullRequest
0 голосов
/ 08 февраля 2012

Я надеюсь, что кто-то может мне помочь, я не профессионал в области программирования, но использую 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 голосов
/ 08 февраля 2012

Есть много, много вещей не так с этим. Поскольку это домашнее задание, я дам одну подсказку.

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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...