<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>George Tanev on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/george-tanev/</link><description>Articles written by George Tanev on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 24 May 2023 12:55:14 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/george-tanev/index.xml" rel="self" type="application/rss+xml"/><item><title>Rolling Binary Trees: A Guide to Common Design Patterns in Java</title><link>https://foojayio.github.io/website/today/rolling-binary-trees-a-guide-to-common-design-patterns-in-java/</link><pubDate>Wed, 24 May 2023 12:55:14 +0000</pubDate><guid>https://foojayio.github.io/website/today/rolling-binary-trees-a-guide-to-common-design-patterns-in-java/</guid><description>&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Binary trees are fundamental data structures, ubiquitous in computer science and software engineering. We use them to represent hierarchical data and implement more complex data structures, such as search trees, syntax trees, cryptographic hash trees, space partitioning trees, heaps, and so on. Common binary tree operations include insertion, deletion, traversal, and rotation.&lt;/p&gt;
&lt;p&gt;A relatively uncommon and unexplored operation is &lt;strong&gt;roll&lt;/strong&gt; , which modifies the structure of a binary tree in such a way that, when visualized, the newly obtained structure appears to be rolled at a 90-degree angle, either clockwise or counterclockwise. This gives us two variants of the roll operation &amp;mdash; &lt;strong&gt;clockwise roll&lt;/strong&gt; (CR) and &lt;strong&gt;counterclockwise roll&lt;/strong&gt; (CCR).&lt;/p&gt;</description></item></channel></rss>