Python面向对象编程:创建随机二叉搜索树时遇AttributeError
解决Treap实现中的AttributeError问题
从你贴的代码片段和报错信息来看,这个AttributeError的原因非常直观——你在初始化节点优先级的时候,把导入的random模块名拼写错了(写成了rando...,明显是拼写失误或者未完成代码),导致Python找不到对应的属性。
修正后的节点类代码
import random class TreapNode: """Skapar en nod för det randomiserade binära sökträdet""" def __init__(self, value = None, parent = None, left_child = None, right_child = None): self.val = value # 生成随机优先级,这里用整数范围的随机数,也可以用random()返回浮点数 self.pri = random.randint(1, 10000) # 替换你未完成的rando...部分 self.parent = parent self.left = left_child self.right = right_child
额外的实现提示
- 优先级的生成可以根据需求选择:用
random.randint()生成整数优先级,或者random.random()生成0-1之间的浮点数,只要保证每次创建节点时优先级是随机且均匀分布的即可 - 后续实现Treap的核心操作(插入、删除、旋转)时,要记住同时维护两个性质:
- 二叉搜索树性质:左子树所有节点值小于当前节点,右子树所有节点值大于当前节点
- 堆性质:当前节点的优先级大于等于左右子节点的优先级(通常用大顶堆)
- 如果你后续还遇到其他报错,可以把完整的错误栈和更多代码贴出来,方便进一步排查
内容的提问来源于stack exchange,提问作者SimpleProgrammer
相关产品推荐
相关产品推荐

