FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
cpython/Modules/rotatingtree.h at pythoncapi · pythoncapi/cpython · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
pythoncapi
/
cpython
Public
forked from
python/cpython
Notifications
You must be signed in to change notification settings
Fork
0
Star
1
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
cpython
/
Modules
/
rotatingtree.h
Copy path
More file actions
More file actions
Latest commit
History
History
History
27 lines (22 loc) · 924 Bytes
Breadcrumbs
cpython
/
Modules
/
rotatingtree.h
Copy path
File metadata and controls
27 lines (22 loc) · 924 Bytes
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* "Rotating trees" (Armin Rigo)
*
* Google "splay trees" for the general idea.
*
* It's a dict-like data structure that works best when accesses are not
* random, but follow a strong pattern. The one implemented here is for
* access patterns where the same small set of keys is looked up over
* and over again, and this set of keys evolves slowly over time.
*/
#include
<stdlib.h>
#define
EMPTY_ROTATING_TREE
((rotating_node_t *)NULL)
typedef
struct
rotating_node_s
rotating_node_t
;
typedef
int
(
*
rotating_tree_enum_fn
) (
rotating_node_t
*
node
,
void
*
arg
);
struct
rotating_node_s
{
void
*
key
;
rotating_node_t
*
left
;
rotating_node_t
*
right
;
};
void
RotatingTree_Add
(
rotating_node_t
*
*
root
,
rotating_node_t
*
node
);
rotating_node_t
*
RotatingTree_Get
(
rotating_node_t
*
*
root
,
void
*
key
);
int
RotatingTree_Enum
(
rotating_node_t
*
root
,
rotating_tree_enum_fn
enumfn
,
void
*
arg
);
Back
|
FazBrowse Home
|
New Git URL