mirror of
https://github.com/mfocko/blog.git
synced 2024-11-21 12:33:57 +01:00
My blog containing blog posts (duh…) and additional materials from courses at fi in which I've been involved in one way or another
Matej Focko
957962665d
Signed-off-by: Matej Focko <me@mfocko.xyz> diff --git a/static/files/algorithms/rb-trees/avl/src/AVL.cs b/static/files/algorithms/rb-trees/avl/src/AVL.cs index 757d8d4..9b3e35e 100644 --- a/static/files/algorithms/rb-trees/avl/src/AVL.cs +++ b/static/files/algorithms/rb-trees/avl/src/AVL.cs @@ -12,32 +12,29 @@ class AVL<T>(IComparer<T> comparator) : IEnumerable<T> { #region AVLSpecific - private static (bool correct, int depth) Check(Node<T>? node, int depth) { + private static (bool Correct, int Depth) Check(Node<T>? node, int depth) { if (node == null) { return (true, depth); } - var (leftCorrect, leftDepth) = Check(node.Left, 1 + depth); - if (!leftCorrect) { - return (false, leftDepth); + var left = Check(node.Left, 1 + depth); + if (!left.Correct) { + return (false, left.Depth); } - var (rightCorrect, rightDepth) = Check(node.Right, 1 + depth); + var right = Check(node.Right, 1 + depth); - var foundDepth = Math.Max(leftDepth, rightDepth); - return (rightCorrect && Math.Abs(leftDepth - rightDepth) <= 1, foundDepth); + var foundDepth = Math.Max(left.Depth, right.Depth); + return (right.Correct && Math.Abs(left.Depth - right.Depth) <= 1, foundDepth); } - public bool IsCorrect() { - var (correct, _) = Check(_root, 0); - return correct; - } + public bool IsCorrect() => Check(_root, 0).Correct; - private void InsertRebalance(List<Node<T>> nodes) { + private void InsertRebalance(List<Node<T>> nodes, T item) { // TODO } - private void DeleteRebalance(List<Node<T>> nodes) { + private void DeleteRebalance(List<Node<T>> nodes, T item) { // TODO } @@ -79,10 +76,9 @@ class AVL<T>(IComparer<T> comparator) : IEnumerable<T> { } else { path[lastIdx].Left = newItem; } - path.Add(newItem); // rebalance - InsertRebalance(path); + InsertRebalance(path, item); return true; } |
||
---|---|---|
.github/workflows | ||
algorithms | ||
automata | ||
blog | ||
c | ||
cpp | ||
foundations | ||
functional | ||
src | ||
static | ||
.gitignore | ||
.gitlab-ci.yml | ||
.pre-commit-config.yaml | ||
babel.config.js | ||
docusaurus.config.js | ||
makefile | ||
package.json | ||
README.md | ||
regenerate-archives.sh | ||
regenerate-dots.sh | ||
sidebars.js | ||
yarn.lock |
Website
This website is built using Docusaurus 2, a modern static website generator.
Installation
$ yarn
Local Development
$ yarn start
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
Build
$ yarn build
This command generates static content into the build
directory and can be served using any static contents hosting service.
Deployment
Using SSH:
$ USE_SSH=true yarn deploy
Not using SSH:
$ GIT_USER=<Your GitHub username> yarn deploy
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the gh-pages
branch.