python-3.x - RB 树不适用于*一些*未排序的数组
问题描述
if(node.parent.parent.parent.right == node.parent.parent):
tnode = self.LR(node.parent.parent)
node.parent.parent.parent.right = tnode
这是导致错误的代码部分。比如说,插入的节点是 5,12,10,那么它会导致运行时错误。但是,插入 5,10,12 会起作用。(虽然 10,8,12 有效)。
返回的错误是:
File "Solution.py", line 132, in Balance
if(node.parent.parent.parent.right == node.parent.parent):
AttributeError: 'NoneType' object has no attribute 'right'
有人可以帮我解决这个问题吗?代码已经太大了,我很困惑。
解决方案
首先,确保您实际上是指“node.parent.parent.parent”,因为 RB 重新平衡的通常规则只要求在任何给定阶段检查父级和祖级。
如果您确实是指 node.parent.parent.parent 在检查“正确”之前确保它不为空。
推荐阅读
- python - 如何从简单的 Python 列表创建具有嵌套值的 JSON 文件
- reactjs - 如何在 TypeScript 中为 React 组件的子组件添加“自定义”属性?
- reactjs - 缓存数据是自定义挂钩 - 防止重新渲染
- vb6 - 致命错误 C1083:无法打开编译器生成的文件?
- flutter - 有没有办法将 SliverList 的子数设置为 Firebase 集合长度?
- javascript - 无法获取所有本地存储数据并将其放入单独的div中
- r - 为什么 tryCatch() 'error = function(e){}' 不会像控制台一样执行嵌套在函数中的操作?
- reactjs - React useState:isActive 和 hasActivatedOnce 状态
- javascript - 如何将 jsdoc 添加到 jquery $.each() 函数中?
- python - Django将model.class传入查看