我是一名在校大学生,我想写一个函数来求一个红黑树的近似高度,由于红黑树的最长子树不大于最小子树的一半所以我仿照Treeminimum函数写了如下函数(root 在其他函数中用T.root调用):
def ProxHigh(T, root):
h = 0
x = root
if x != None:
while x.left != T.nil or x.right != 0:
if x.left == T.nil:
x = x.right
else:
x = x.left
h = h + 1
return h
else:
return 0
写if x != None 是因为之前其显示了如下错误:
File "红黑树.py", line 224, in ProxHigh
while x.left != T.nil or x.right != 0:
AttributeError: 'NoneType' object has no attribute 'left'
查阅资料发现其意味着x的对象类型为‘NoneType’,这意味着其被赋予了‘None’值。但加上了'if x != None'之后其还是会显示同样的报错,把光标移到x上方和print(x)都会显示x的类型为TreeNode但把光标移到x.left上方会显示其类型为‘NoneType’并且可以打印'x.key'和‘x.left.key’的值,但是还是会报这样的错误。请问有人知道这是为什么吗?谢谢
相似问题