扫码关注官方订阅号
ringa_lee
经常会出现 AttributeError 是因为你自己作死,每次用随机数初始化树结构,每当树里面不存在 10 或者出现左子树/右子树为空的时候 bst 的方法就有可能返回 None,加上你没有检查返回值就直接调用 key 属性,当然就错了。
AttributeError
bst
None
key
此外,python 用法上问题较多,看起来是才接触 python 不久吧。记住在 python 里面不需要声明变量类型,大量存在 w = TreeNode(None) 这种代码,我觉得你应该是想“声明”一个 TreeNode 变量然后使用吧,这是不必要。另外 python 2 里面定义 class 应该始终从 object 派生,比如 class TreeNode(object): ,这需要注意一下。
w = TreeNode(None)
TreeNode
object
class TreeNode(object):
算法方面问题不是很大,要说错误的地方就是 minimum/maximum 都没有考虑 node 某个子树不存在的情况,比如 node.left == None 时 minimum 应该返回 node 本身。
minimum
maximum
node.left == None
node
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
经常会出现
AttributeError
是因为你自己作死,每次用随机数初始化树结构,每当树里面不存在 10 或者出现左子树/右子树为空的时候bst
的方法就有可能返回None
,加上你没有检查返回值就直接调用key
属性,当然就错了。此外,python 用法上问题较多,看起来是才接触 python 不久吧。记住在 python 里面不需要声明变量类型,大量存在
w = TreeNode(None)
这种代码,我觉得你应该是想“声明”一个TreeNode
变量然后使用吧,这是不必要。另外 python 2 里面定义 class 应该始终从object
派生,比如class TreeNode(object):
,这需要注意一下。算法方面问题不是很大,要说错误的地方就是
minimum
/maximum
都没有考虑 node 某个子树不存在的情况,比如node.left == None
时minimum
应该返回node
本身。