繁体   English   中英

在AVL树中找到大小为k的顶点

[英]Find a vertex of size k in an AVL tree

设a为具有n个顶点的AVL树。 每个顶点都有一个扩展,该扩展表示以其本人为根的子树的大小。 我正在尝试实现一种算法,该算法获得输入数k st 1 <= k <= n并返回O(logn)中大小为k的顶点。

如果树是完整的二叉树,我们很容易就可以左右移动,直到我们到达所需大小的节点为止,因为高度为h的所有节点都将具有相同的大小。 但是,当树还没满的时候,我就会陷入困境。

任何帮助都感激不尽。

提前致谢!

PS我假设每个顶点都有不同的值。

首先,检查左子树是否大于k,如果大于->继续在其中搜索。 否则,检查左子树的大小+ 1是否等于k,在这种情况下,当前元素为第k个,因此返回当前节点。 如果达到这一点,则意味着第k个元素将位于右侧子树中,因此请移至右侧子树并搜索k-(左侧子树大小+ 1)元素,因为已经消除了所有这些节点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM