# Find the numbers present at Kth level of a Fibonacci Binary Tree

Given a number K, the task is to print the fibonacci numbers present at Kth level of a Fibonacci Binary Tree.

Examples:

```Input: K = 3
Output: 2, 3, 5, 8
Explanation:
Fibonacci Binary Tree for 3 levels:
0
/ \
1   1
/\  / \
2  3 5  8
Numbers present at level 3: 2, 3, 5, 8

Input: K = 2
Output: 1, 1
Explanation:
Fibonacci Binary Tree for 2 levels:
0
/ \
1   1
Numbers present at level 2: 1, 1
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Naive Approach: The naive approach is to build a Fibonacci Binary Tree (binary tree of Fibonacci numbers) and then get elements at a particular level K.
However, this approach is obsolete for large numbers as it takes too much time.

Efficient approach: Since the elements which would be present at some arbitrary level K of the tree can be found by finding the elements in the range [2K – 1, 2K – 1]. Therefore:

1. Find the Fibonacci numbers up to 106 using Dynamic Programming and store them in an array.
2. Calculate the left_index and right_index of the level as:
```left_index = 2K - 1
right_index = 2K - 1
```
3. Print the fibonacci numbers from left_index to right_index of fibonacci array.

Below is the implementation of the above approach:

## C++

 `// C++ program to print the Fibonacci numbers ` `// present at K-th level of a Binary Tree ` ` `  `#include ` `using` `namespace` `std; ` ` `  `// Initializing the max value ` `#define MAX_SIZE 100005 ` ` `  `// Array to store all the ` `// fibonacci numbers ` `int` `fib[MAX_SIZE + 1]; ` ` `  `// Function to generate fibonacci numbers ` `// using Dynamic Programming ` `void` `fibonacci() ` `{ ` `    ``int` `i; ` ` `  `    ``// 0th and 1st number of the series ` `    ``// are 0 and 1 ` `    ``fib = 0; ` `    ``fib = 1; ` ` `  `    ``for` `(i = 2; i <= MAX_SIZE; i++) { ` ` `  `        ``// Add the previous two numbers in the ` `        ``// series and store it ` `        ``fib[i] = fib[i - 1] + fib[i - 2]; ` `    ``} ` `} ` ` `  `// Function to print the Fibonacci numbers ` `// present at Kth level of a Binary Tree ` `void` `printLevel(``int` `level) ` `{ ` `    ``// Finding the left and right index ` `    ``int` `left_index = ``pow``(2, level - 1); ` `    ``int` `right_index = ``pow``(2, level) - 1; ` ` `  `    ``// Iterating and printing the numbers ` `    ``for` `(``int` `i = left_index; ` `         ``i <= right_index; i++) { ` ` `  `        ``cout << fib[i - 1] << ``" "``; ` `    ``} ` `    ``cout << endl; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``// Precomputing Fibonacci numbers ` `    ``fibonacci(); ` ` `  `    ``int` `K = 4; ` `    ``printLevel(K); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java program to print the Fibonacci numbers ` `// present at K-th level of a Binary Tree ` `import` `java.util.*; ` ` `  `class` `GFG{ ` `  `  `// Initializing the max value ` `static` `final` `int` `MAX_SIZE = ``100005``; ` `  `  `// Array to store all the ` `// fibonacci numbers ` `static` `int` `[]fib = ``new` `int``[MAX_SIZE + ``1``]; ` `  `  `// Function to generate fibonacci numbers ` `// using Dynamic Programming ` `static` `void` `fibonacci() ` `{ ` `    ``int` `i; ` `  `  `    ``// 0th and 1st number of the series ` `    ``// are 0 and 1 ` `    ``fib[``0``] = ``0``; ` `    ``fib[``1``] = ``1``; ` `  `  `    ``for` `(i = ``2``; i <= MAX_SIZE; i++) { ` `  `  `        ``// Add the previous two numbers in the ` `        ``// series and store it ` `        ``fib[i] = fib[i - ``1``] + fib[i - ``2``]; ` `    ``} ` `} ` `  `  `// Function to print the Fibonacci numbers ` `// present at Kth level of a Binary Tree ` `static` `void` `printLevel(``int` `level) ` `{ ` `    ``// Finding the left and right index ` `    ``int` `left_index = (``int``) Math.pow(``2``, level - ``1``); ` `    ``int` `right_index = (``int``) (Math.pow(``2``, level) - ``1``); ` `  `  `    ``// Iterating and printing the numbers ` `    ``for` `(``int` `i = left_index; ` `         ``i <= right_index; i++) { ` `  `  `        ``System.out.print(fib[i - ``1``]+ ``" "``); ` `    ``} ` `    ``System.out.println(); ` `} ` `  `  `// Driver code ` `public` `static` `void` `main(String[] args) ` `{ ` `    ``// Precomputing Fibonacci numbers ` `    ``fibonacci(); ` `  `  `    ``int` `K = ``4``; ` `    ``printLevel(K); ` `} ` `} ` ` `  `// This code is contributed by Rajput-Ji `

## Python3

 `# Python program to print the Fibonacci numbers ` `# present at K-th level of a Binary Tree ` ` `  `# Initializing the max value ` `MAX_SIZE ``=` `100005` ` `  `# Array to store all the ` `# fibonacci numbers ` `fib ``=``[``0``]``*``(MAX_SIZE ``+` `1``) ` ` `  `# Function to generate fibonacci numbers ` `# using Dynamic Programming ` `def` `fibonacci(): ` `     `  `    ``# 0th and 1st number of the series ` `    ``# are 0 and 1 ` `    ``fib[``0``] ``=` `0` `    ``fib[``1``] ``=` `1` `     `  `    ``for` `i ``in` `range``(``2``, MAX_SIZE ``+` `1``): ` `         `  `        ``# Add the previous two numbers in the ` `        ``# series and store it ` `        ``fib[i] ``=` `fib[i ``-` `1``] ``+` `fib[i ``-` `2``] ` `         `  `# Function to print the Fibonacci numbers ` `# present at Kth level of a Binary Tree ` `def` `printLevel(level): ` `     `  `    ``# Finding the left and right index ` `    ``left_index ``=` `pow``(``2``, level ``-` `1``) ` `    ``right_index ``=` `pow``(``2``, level) ``-` `1` `     `  `    ``# Iterating and printing the numbers ` `    ``for` `i ``in` `range``(left_index, right_index``+``1``): ` `        ``print``(fib[i ``-` `1``],end``=``" "``) ` `         `  `    ``print``() ` ` `  `# Driver code ` ` `  `# Precomputing Fibonacci numbers ` `fibonacci() ` ` `  `K ``=` `4` `printLevel(K) ` ` `  `# This code is contributed by shivanisinghss2110 `

## C#

 `// C# program to print the Fibonacci numbers  ` `// present at K-th level of a Binary Tree  ` `using` `System; ` ` `  `class` `GFG{  ` `     `  `    ``// Initializing the max value  ` `    ``static` `int` `MAX_SIZE = 100005;  ` `     `  `    ``// Array to store all the  ` `    ``// fibonacci numbers  ` `    ``static` `int` `[]fib = ``new` `int``[MAX_SIZE + 1];  ` `     `  `    ``// Function to generate fibonacci numbers  ` `    ``// using Dynamic Programming  ` `    ``static` `void` `fibonacci()  ` `    ``{  ` `        ``int` `i;  ` `     `  `        ``// 0th and 1st number of the series  ` `        ``// are 0 and 1  ` `        ``fib = 0;  ` `        ``fib = 1;  ` `     `  `        ``for` `(i = 2; i <= MAX_SIZE; i++) {  ` `     `  `            ``// Add the previous two numbers in the  ` `            ``// series and store it  ` `            ``fib[i] = fib[i - 1] + fib[i - 2];  ` `        ``}  ` `    ``}  ` `     `  `    ``// Function to print the Fibonacci numbers  ` `    ``// present at Kth level of a Binary Tree  ` `    ``static` `void` `printLevel(``int` `level)  ` `    ``{  ` `        ``// Finding the left and right index  ` `        ``int` `left_index = (``int``) Math.Pow(2, level - 1);  ` `        ``int` `right_index = (``int``) (Math.Pow(2, level) - 1);  ` `     `  `        ``// Iterating and printing the numbers  ` `        ``for` `(``int` `i = left_index;  ` `            ``i <= right_index; i++) {  ` `     `  `            ``Console.Write(fib[i - 1]+ ``" "``);  ` `        ``}  ` `            ``Console.WriteLine();  ` `    ``}  ` `     `  `    ``// Driver code  ` `    ``public` `static` `void` `Main(``string``[] args)  ` `    ``{  ` `        ``// Precomputing Fibonacci numbers  ` `        ``fibonacci();  ` `     `  `        ``int` `K = 4;  ` `        ``printLevel(K);  ` `    ``}  ` `}  ` ` `  `// This code is contributed by Yash_R `

Output:

```13 21 34 55 89 144 233 377
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. 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.