⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9.40.c

📁 部分高校使用anyview编程测试数据结构习题,此代码为数据结构题集(c语言版)严蔚敏版的课后习题答案.专门提供给在anyview上运行,全部为通告代码
💻 C
字号:
9.40③  在平衡二叉排序树的每个结点中增设一个
lsize域,其值为它的左子树中的结点数加1。试写
一时间复杂度为O(logn)的算法,确定树中第k小的
结点的位置。

实现下列函数:
BiTNode *Ranking(BiTree T, int k)
/* 在含lsize域的平衡二叉排序树T中确定第k小的结点指针 */

二叉树的类型BiTree定义如下:
typedef struct {
    KeyType key;  
    ... ...   // 其他数据域
} ElemType;

typedef struct BiTNode {
    ElemType data;
    BiTNode  *lchild,*rchild;
    int      lsize;
}BiTNode, *BiTree;
BiTNode *Ranking(BiTree T, int k)
/* 在含lsize域的平衡二叉排序树T中确定第k小的结点指针 */
{
 if(!T) return NULL;                             //不存在要求的指针,k小于1或者大于树的总结点数
 if(T->lsize==k) return T;                       //T就是要求结点
 else if(T->lsize>k) return Ranking(T->lchild,k);//在左子树中寻找
 else return Ranking(T->rchild,k-T->lsize);      //在右子树中寻找
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -