BST functions in libc

我今天刚发现,原来libc里面自带的就有二叉搜索树相关函数.

void *tdelete(const void * restrict key, void ** restrict rootp, int (*compar) (const void *, const void *));

void *tfind(const void *key, void * const *rootp, int (*compar) (const void *, const void *));

void *tsearch(const void *key, void **rootp, int (*compar) (const void *, const void *));

void twalk(const void *root, void (*action) (const void *, VISIT, int));

其中tsearch其实是insert函数,名字有点歧义。

另外我看了下实现,发现FreeBSD下,这几个函数实现的是最最基本的BST,就是一点旋转、平衡都没有的。而在Linux下,它们是红黑树。

freebsd下没有destroy函数。其实这个只需要按照中序遍历,对每个节点delete/free就行了。

评论

此博客中的热门博文

想换个新路由器

这几天玩快手玩的入迷

用java生tensorflow的tfrecord文件