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就行了。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥