我正在尝试使用类表示二叉树。这就是我所拥有的:
class Tree:
def __init__(self, cargo, parent=None, left=None, right=None):
self.cargo = cargo
self.parent = parent
self.left = left
self.right = right
self.path = ''
def giveChild(self, child, sub):
child.parent = self.cargo
if sub == 'left':
self.left = child
child.path += 'l'
if sub == 'right':
self.right = child
child.path += 'r'
我使用path
来存储从根到某个叶子的路径,例如“ llrlr”(左-左-右-左-右)。
当我向树中添加新节点时,我从下到上。首先,我创建叶子,然后给它们一个父节点。
好的,现在我创建两个叶子:
r = Tree('r')
p = Tree('p')
我创建了下一个节点,该节点是 r 和 p :
的父节点rp = Tree('rp')
rp.giveChild(r, 'left')
现在,由于 r 是 rp 的左节点,所以 r 的路径变为“ l”。 问题是当 rp 获取父节点时如何更改 r 的路径?我的代码不会将路径更改为'... ll'或'... rl',仍然只是'l'