What is Calkin Wilf Sequence?
A Calkin-Wilf tree (or sequence) is a special binary tree which is obtained by starting with the fraction 1/1 and adding a/(a+b) and (a+b)/b iteratively below each fraction a/b. This tree generates every rational number. Writing out the terms in a sequence gives 1/1, 1/2, 2/1, 1/3, 3/2, 2/3, 3/1, 1/4, 4/3, 3/5, 5/2, 2/5, 5/3, 3/4, 4/1, …The sequence has the property that each denominator is the next numerator.
The image above is the Calkin-Wilf Tree where all the rational numbers are listed. The children of a node a/b is calculated as a/(a+b) and (a+b)/b.
The task is to find the nth rational number in breadth first traversal of this tree.
Input : 13 Output : [5, 3] Input : 5 Output : [3, 2]
Explanation: This tree is a Perfect Binary Search tree and we need floor(log(n)) steps to compute nth rational number. The concept is similar to searching in a binary search tree. Given n we keep dividing it by 2 until we get 0. We return fraction at each stage in the following manner:-
if n%2 == 0 update frac+=frac else update frac+=frac
Below is the program to find the nth number in Calkin Wilf sequence:
For n = 13,
Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.
- Number of Binary Trees for given Preorder Sequence length
- Minimum number of operations to convert a given sequence into a Geometric Progression
- Recaman's sequence
- String with additive sequence
- Mountain Sequence Pattern
- Create a sequence whose XOR of elements is y
- Longest sub-sequence with minimum LCM
- Longest sub-sequence with maximum GCD
- Longest sub-sequence with non-negative sum
- Longest sub-sequence with a given OR value : O(N) Approach
- Moser-de Bruijn Sequence
- Baum Sweet Sequence
- Lexicographically largest sub-sequence of the given string
- Longest Reverse Bitonic Sequence
- Check if the given Prufer sequence is valid or not
- Count possible decodings of a given Digit Sequence | Set 2
- Print the degree of every node from the given Prufer sequence
- Check if there is a root to leaf path with given sequence
- Optimal sequence for AVL tree insertion (without any rotations)
- String with frequency of characters in Lucas Sequence
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.