/** @copyright 2020 Sean Kasun */ #pragma once #include #include #include struct AVLNode_ { uint32_t key; std::shared_ptr left, right, down; int height; bool matched; }; typedef std::shared_ptr AVLNode; class AVL { public: bool insert(const std::vector &keys); private: AVLNode insertOnce(AVLNode parent, uint32_t key); AVLNode walk(AVLNode root, uint32_t key) const; AVLNode root; };