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

• Last Updated : 27 Oct, 2021

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```

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```
1. 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`

## Javascript

 ``

Output:

`13 21 34 55 89 144 233 377`

My Personal Notes arrow_drop_up