mirror of
https://github.com/mrkite/regs.git
synced 2024-11-26 00:49:17 +00:00
26 lines
466 B
C++
26 lines
466 B
C++
/** @copyright 2020 Sean Kasun */
|
|
#pragma once
|
|
|
|
#include <memory>
|
|
#include <vector>
|
|
#include <cstdint>
|
|
|
|
struct AVLNode_ {
|
|
uint32_t key;
|
|
std::shared_ptr<AVLNode_> left, right, down;
|
|
int height;
|
|
bool matched;
|
|
};
|
|
|
|
typedef std::shared_ptr<AVLNode_> AVLNode;
|
|
|
|
class AVL {
|
|
public:
|
|
bool insert(const std::vector<uint32_t> &keys);
|
|
|
|
private:
|
|
AVLNode insertOnce(AVLNode parent, uint32_t key);
|
|
AVLNode walk(AVLNode root, uint32_t key) const;
|
|
AVLNode root;
|
|
};
|