使用 Python 中的 类 为树节点分配名称
assigning name to tree node using classes in Python
如何给根的左边child的左边child分配一个名字?我是 类 的新手。最后两行是我尝试进行分配的地方。感谢您的帮助!
class BinaryTree:
def __init__(self,rootName):
self.root = rootName
self.leftChild = None
self.rightChild = None
def insertLeft(self,newNode):
if self.leftChild == None:
self.leftChild = BinaryTree(newNode)
else:
t = BinaryTree(newNode)
t.leftChild = self.leftChild
self.leftChild = t
def insertRight(self,newNode):
if self.rightChild == None:
self.rightChild = BinaryTree(newNode)
else:
t = BinaryTree(newNode)
t.rightChild = self.rightChild
self.rightChild = t
def getRightChild(self):
return self.rightChild
def getLeftChild(self):
return self.leftChild
def setRootVal(self,obj):
self.root = obj
def getRootVal(self):
return self.root
r = BinaryTree('a')
r.leftChild = 'b'
r.rightChild = 'c'
r.insertLeft = BinaryTree('b')
r.insertRight = BinaryTree('c')
r.getLeftChild().leftChild = 'd'
r.leftChild.leftChild = 'd'
最后两个语句都给我这个错误:'str' object 没有属性 'getRootVal'
我正在尝试创建一个看起来像这样的树:
查看BinaryTree
的接口,你应该调用insertLeft
和insertRight
将children添加到树中,而不是:
r.leftChild = 'b'
r.rightChild = 'c'
leftChild
和 rightChild
应该是 BinaryTree
objects,而不是字符串。虽然你可以写:
r.leftChild = BinaryTree('b')
r.rightChild = BinaryTree('c')
不处理leftChild
和rightChild
不是None
的情况。这就是您应该使用 insertLeft
和 insertRight
的原因,它们确实为您处理了这些情况:
r.insertLeft('b')
r.insertRight('c')
要插入 d
、e
和 f
,我们使用 insertLeft
和 insertRight
:
同样的方法
r.getLeftChild().insertRight('d')
r.getRightChild().insertLeft('e')
r.getRightChild().insertRight('f')
如何给根的左边child的左边child分配一个名字?我是 类 的新手。最后两行是我尝试进行分配的地方。感谢您的帮助!
class BinaryTree:
def __init__(self,rootName):
self.root = rootName
self.leftChild = None
self.rightChild = None
def insertLeft(self,newNode):
if self.leftChild == None:
self.leftChild = BinaryTree(newNode)
else:
t = BinaryTree(newNode)
t.leftChild = self.leftChild
self.leftChild = t
def insertRight(self,newNode):
if self.rightChild == None:
self.rightChild = BinaryTree(newNode)
else:
t = BinaryTree(newNode)
t.rightChild = self.rightChild
self.rightChild = t
def getRightChild(self):
return self.rightChild
def getLeftChild(self):
return self.leftChild
def setRootVal(self,obj):
self.root = obj
def getRootVal(self):
return self.root
r = BinaryTree('a')
r.leftChild = 'b'
r.rightChild = 'c'
r.insertLeft = BinaryTree('b')
r.insertRight = BinaryTree('c')
r.getLeftChild().leftChild = 'd'
r.leftChild.leftChild = 'd'
最后两个语句都给我这个错误:'str' object 没有属性 'getRootVal'
我正在尝试创建一个看起来像这样的树:
查看BinaryTree
的接口,你应该调用insertLeft
和insertRight
将children添加到树中,而不是:
r.leftChild = 'b'
r.rightChild = 'c'
leftChild
和 rightChild
应该是 BinaryTree
objects,而不是字符串。虽然你可以写:
r.leftChild = BinaryTree('b')
r.rightChild = BinaryTree('c')
不处理leftChild
和rightChild
不是None
的情况。这就是您应该使用 insertLeft
和 insertRight
的原因,它们确实为您处理了这些情况:
r.insertLeft('b')
r.insertRight('c')
要插入 d
、e
和 f
,我们使用 insertLeft
和 insertRight
:
r.getLeftChild().insertRight('d')
r.getRightChild().insertLeft('e')
r.getRightChild().insertRight('f')