recursion - BST中序递归:找到大于K的第一个节点
问题描述
我的代码似乎一直运行到最后(因此返回 None),而不是在找到子树时停止。
def first_greater_than_k(tree, k):
if not tree:
return None
first_greater_than_k(tree.left, k)
if tree.data > k:
return tree
first_greater_than_k(tree.right, k)
解决方案
没有递归的原始答案:
def first_greater_than_k(tree, k):
subtree, first_so_far = tree, None
while subtree:
if subtree.data > k:
first_so_far, subtree = subtree, subtree.left
else:
subtree = subtree.right
return first_so_far
推荐阅读
- php - 从不同于我正在工作的 PHP 服务器发送 mail()
- c# - 为什么派生类中不调用该方法
- excel - 为什么我在打破公式时会出错?
- c# - null 的可空日期时间验证
- java - Makefile:致命错误:jni.h:没有这样的文件或目录
- mysql - 如何使用 Play JSON 为 MySQL 创建 Doobie Meta 实例?
- java - JPA:如何仅与 ID 而不是对象建立关系?
- python-3.x - 在单类汽车上训练,但预测其他类
- visual-studio-code - 在 VS Code 中,有没有办法打开所有有合并冲突的文件?
- javascript - 添加播放按钮以触发javascript时间滑块?