While i was studying for midterm about binary trees, i found a statement that any arbitrary n-node binary tree can be transformed into any other n-node binary tree with at most 2*n-2 rotations. Is there any proof for that? I found some kind of proof with asymptotic notations but it was not that clear. I mean could someone explain/show why it is true? And if it says that n-node binary tree, does it include the root?
Binary tree transformation using rotations
5.2k Views Asked by fhuseynli At
2
There are 2 best solutions below
Related Questions in ALGORITHM
- Two different numbers in an array which their sum equals to a given value
- Given two arrays of positive numbers, re-arrange them to form a resulting array, resulting array contains the elements in the same given sequence
- Time complexity of the algorithm?
- Find a MST in O(V+E) Time in a Graph
- Why k and l for LSH used for approximate nearest neighbours?
- How to count the number of ways of choosing of k equal substrings from a List L(the list of All Substrings)
- Issues with reversing the linkedlist
- Finding first non-repeating number in integer array
- Finding average of an array
- How to check for duplicates with less time in a list over 9000 elements by python
- How to pick a number based on probability?
- Insertion Sort help in javascript -- Khan Academy
- Developing a Checkers (Draughts) engine, how to begin?
- Can Bellman-Ford algorithm be used to find shorthest path on a graph with only positive edges?
- What is the function for the KMP Failure Algorithm?
Related Questions in MATH
- bc: prevent "divide by zero" runtime error on multiple operations
- How to round smoothly percentage in JS
- Calculate if trend is up, down or stable
- How to pick a number based on probability?
- Python 2.7 - find combinations of numbers in a list that add to another number
- How to translate an object to a location slowly (so that it can be seen)
- max() implemented with basic operators
- Matlab: how to fit time series with a funcion of a certain type
- 3D B-Spline approximation
- Issues with adding doubles. Arithmetic Coding
- Calculate new position post rotation
- Javascript: PI (π) Calculator
- How to compute a^^b mod m?
- Need Custom Query in SQL Server
- Number of divisiors upto 10^6
Related Questions in DATA-STRUCTURES
- Borrow mutable and immutable reference in the same block
- Why would one use a heap over a self balancing binary search tree?
- Reverse linked list in java
- Doubly Linked List, MergeSort, getting undefined and unreliable results
- Difference in performance of adding elements in Treeset directly vs transferring from arraylist?
- Why the leaf node in red black tree is NIL?
- When to use double pointers?
- find the biggest possible number comprised of the digits of of a given number
- Data structure to efficiently merge up to n elements of multiset
- How to convert a string to a key for hash table
- Implement queues in java
- What does it mean to "close over" something?
- How to use hash tables when amount of slots is unknown?
- Unknown Data Structure?
- how to find type of connection between the social network entities
Related Questions in BINARY-TREE
- How to Compute Space Complexity for Printing All paths which Sum to a Given Value in Binary Tree
- Recursively divide a list that each iteration divides into two parts to get the closest sum overall
- Function that return average depth of a binary search tree
- Print a Binary Search Tree with Correct Formatting
- Recursive Tree Walk with ES6 Promise
- Making a very basic binary tree in Scala
- maximum sum of value from root to leaf in a binary tree using stack
- How to Compute Space Complexity for Binary SubTree Finding
- Scala: How to compute the sum of all elements in the leaves of a Binary Tree?
- Pass a value by reference in a function to find level of node in a binary tree
- How to implement remove() method in binary search tree iterator
- How to copy an object in Scala?
- Complex conditional filter design
- Recursively count children nodes in binary tree
- Updating value of node in Scala?
Related Questions in TREE-ROTATION
- Left Rotation of Binary Tree in Rust Fails to Outlive The Original
- How do I fix my Red Black Tree from rotating unnecessarily?
- Pointers in AVL Tree Rotation
- Rotation in a Red Black tree
- Binary tree transformation using rotations
- AVL trees insertion and deletion
- Max. number of rotations while inserting a new element into n-element red black tree
- May binary search tree get broken by rotation?
- Extra Cases in AVL Trees
- How to create the bottom up splay tree from the following sequence
- I met a problem while trying to rotate an AVL tree in C
- Rotation distance between two binary trees
- Algorithms for converting from complete-binary-search-tree order to sorted order and vice versa
- Is it always possible to turn one BST into another using at most O(n) tree rotations?
- Prove maximum number of rotations for two trees to become equal
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
This answer is from CLRS 3rd Edition textbook question 13.2-4.
Let
LEFT = an entire left linked list binary tree
RIGHT = an entire right linked list binary tree.
You can easily rotate LEFT to RIGHT in (n-1) rotations.
e.g: n = 3 3 2 1 2 to 1 3 to 2 1 3Proof: Since by definition, each right rotation will increase the length of the right most path by at least 1. Therefore, starting from right most path with length 1 (worst case), you need at most (n-1) rotations performed to make it into RIGHT.
Thus, you can easily conclude that any arbitrary shape of binary tree with n nodes can rotate into RIGHT within (n-1) rotations. Let T_1 be node you begin with Let T_2 be node you end with.
You can rotate T_1 to RIGHT within (n-1) rotations. Similarly, You can rotate T_2 to RIGHT within (n-1) rotations.
Therefore, To rotate T_1 into T_2, simply rotate T_1 into RIGHT , then do the inverse rotation to rotate from RIGHT into T_2.
Therefore, you can do this in (n-1)+(n-1) = 2n-2 rotations in upper bound.