本文介绍了如何使用二叉搜索树实现优先级队列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 我正在尝试使用二进制搜索树为优先级队列实现优先级队列函数PQ_DeleteMin(),PQ_GetMinKey()。二叉搜索树包含获取k个最近节点的附加信息。任何人都可以帮助我如何在C中实现这一目标吗?谢谢。 我尝试过: 插入代码节点写为: 节点*插入(节点*树, void * 对象, float (*距离)( void *, void *)) { if ( Tree == NULL){ if ((Tree =(Node *)malloc( sizeof (节点)))== NULL){ printf( 内存不足); 退出( 1 ); } Tree-> p1 = 对象; Tree-> p2 = NULL; Tree-> left = Tree-> right = NULL; } else if (Tree-> p2 = = NULL) Tree-> p2 = 对象; else if ((* Distance)(Tree-> p1, 对象)<(*距离)(树 - > p2,对象)) insert(Tree-> left, Object ,Distance); else insert(Tree-> right, Object ,Distance); return (树); } 解决方案 I am trying to implement Priority queue functions PQ_DeleteMin(), PQ_GetMinKey() for Priority Queue with Binary Search Tree. The binary search tree contains additional information to get the k nearest nodes. Can any one help me how to achieve that in C? Thanks.What I have tried:The code for inserting a node is written as:Node *insert(Node *Tree, void *Object, float (*Distance)(void *, void *)){ if(Tree == NULL){ if((Tree=(Node *)malloc(sizeof(Node)))==NULL){ printf("Insufficient memory"); exit(1); } Tree->p1 = Object; Tree->p2 = NULL; Tree->left = Tree->right =NULL; } else if (Tree->p2 == NULL) Tree->p2 = Object; else if ((*Distance)(Tree->p1, Object) < (*Distance)(Tree->p2, Object)) insert(Tree->left, Object, Distance); else insert(Tree->right, Object, Distance); return(Tree);} 解决方案 这篇关于如何使用二叉搜索树实现优先级队列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!