data-structures - 如何在 O(1) 时间内返回 AVL 树的最左边节点?
问题描述
我的想法是:
AVLNode minOfTree(AVLNode node) {
while (node.left != null) node = node.left;
return node;
}
但是,while 循环不能是 O(1) 时间,对吧?
解决方案
你是对的。从根走到最左边的节点需要 O(log N) 时间。
所以,只需在最左边的节点周围保留一个指针。每当您删除它或插入一个较小的节点时,只需再次找到最左边的节点即可。插入和删除都需要 O(log N) 时间,因此您可以花费额外的 O(log N) 时间而不会改变它们的复杂性。
推荐阅读
- javascript - 为什么这种以最简单的方式模拟服务器端渲染 XSS 漏洞的尝试不起作用?
- python - 用于检查条件语句python的正则表达式
- dns - DNS 中的问题 - Gandi 上托管的域 - 由 Route 53 管理的 DNS
- javascript - Electron 在生产模式下运行
- c++ - 如何解决我在 Ubuntu 19.04 下使用 GLFW 时遇到的编译问题?
- mediawiki - 一个人的多个属性 Semantic Mediawiki
- python - 在 numpy/pandas 中的两个值之间创建特定大小的 bin
- java - Firebase 查询:如何按孩子的孩子价值排序?
- python - 尝试导入 NLTK 模块时出现导入错误
- php - ACF 变量转换为简码