×

Strictly binary tree in Data Structures?

What is a strictly Binary Tree in Data Structures?

There are various kinds of binary trees that we know exist in data structures, and they all have their purposes. In this article, we are going to talk about a specific binary tree named a strictly binary tree. It is the one in which every node present in the tree either contains two nodes or doesn’t have any node at all. They are also popularly known as the full binary tree. In more technical terms, a strictly binary tree which is also known as a full binary tree, tends to be the kind of tree in which all the nodes have their own offspring or children except the leaf nodes.

Here is a strictly binary tree:

How to discover a strictly binary tree?

To find out whether the given binary tree is strictly or not, we have to first check that it must follow all of this properly. The conditions are: -

  1. If we are given a binary tree whose both the subtrees that are left and right are vacant or clear, then there are high chances of it being a strictly binary tree.
  1. If we have a tree whose node is NULL, then it is a strictly binary tree.
  1. If we have a binary tree that already consists of left and right subtrees, then from the definition, we know that it is a strictly binary tree.
  1. In any other way of arrangement of left and right subtrees, it is not a strictly binary tree.

Strictly binary tree theorem: -

Let us suppose that we have a binary tree named M, which is a non-empty tree then: -

  • Let I be the nodes that are present inside, and L be the leaf nodes that are present in a tree. Then the total number of leaf nodes that are present within a tree can be calculated by: -
    L = I + 1
  • Let us suppose that the tree has M name and if the tree named M has a total number of internal nodes named I and the total number of nodes that are present is to be named N, then the total number of nodes that are present: -
    N = 2I + 1
  • If the tree M has N number of total nodes and I number of internal nodes, then the number of internal nodes that are present in the tree would be calculated by: -
    I = (N – 2)/ 2
  • If we have a tree named M that has a total number of leaf node L and a total number of node N, then the total number of leaf nodes present in the tree will be: -
    L = (N + 1)/ 2
  • If the tree named M has N number of total nodes present within it, then the total number of leaf nodes can be calculated by the given formula: -
    N = 2L – 1
  • If the tree named M has L amount of leaf nodes and I is to be the total number of internal nodes that tree is having, then the total number of internal nodes can be calculated by the given formula: - I = L – 1

Implementation

// Checking if a binary tree is a strictly binary tree in C++


#include <iostream>
using namespace std;


struct Node {
  int key;
  struct Node *left, *right;
};


// New node creation
struct Node *newNode(char k) {
  struct Node *node = (struct Node *)malloc(sizeof(struct Node));
  node->key = k;
  node->right = node->left = NULL;
  return node;
}


bool isStrictlyBinaryTree(struct Node *root) {
  
  // Checking for emptiness
  if (root == NULL)
    return true;


  // Checking for the presence of children
  if (root->left == NULL && root->right == NULL)
    return true;


  if ((root->left) && (root->right))
    return (isStrictlyBinaryTree(root->left) && isStrictlyBinaryTree(root->right));


  return false;
}


int main() {
  struct Node *root = NULL;
  root = newNode(1);
  root->left = newNode(2);
  root->right = newNode(3);
 
root->left->left = newNode(4);
 
root->left->right = newNode(5);
 
root->left->right->left = newNode(6);
 
root->left->right->right = newNode(7);


  if (isStrictlyBinaryTree(root))
    cout << "The tree is a strictly binary tree\n";
  else
    cout << "The tree is not a strictly binary tree\n";
}

Output:

Strictly Binary Tree

Complexity

In this section, we know about the time and auxiliary space complexity of the strictly binary tree. The time complexity for this kind of tree turns out to be big O of n, which is usually written as O(n), and also the auxiliary space for this kind of tree also turns out to be O(n).


Related Topics

Serialize and Deserialize Binary Trees

In order to save a tree in a file that can later be restored, serialisation is used. The tree's structure must be preserved. Deserialization involves reading a tree from a...

4 minutes read.

Big O Notations

What is Big O Notation, and why is it important? "Big O notation is a mathematical notation that depicts a function's limiting behaviour when the input tends towards a certain value...

10 minutes read.

What is a Tree in Terms of a Graph?

To know the explanation of trees in terms of graphs, we need first to know what trees and graphs are. So let us first learn about trees and graphs. Trees and...

6 minutes read.

What is a Height-Balanced Tree in Data Structure

A height-balanced tree is a type of binary tree. If the absolute difference between the heights of the left and right subtree is less than or equal to 1, then...

6 minutes read.

Red-black Tree in Data Structures?

A type of binary tree which is known as the Red-Black tree, is a specialized and unique tree. What is the urgency or, to be more precise, the necessity of...

10 minutes read.

Finding the Sum of All Paths in a Binary Tree

Implementation // Writing the C++ program to implement the below approach.  #include <bits/stdc++.h> using namespace std; // creating the new tree node structure. struct Tree__nod { int val; Tree__nod *Lft, *Rt; }; // creating a new function that will...

8 minutes read.

Convert a Binary Tree into a Binary Search Tree

Implementation #include <stdio.h>   #include <stdlib.h>       //creating a node of the binary tree.  struct __nod{       int record;       struct __nod *Lft;       struct __nod *Rt;   };       // presenting the root of the binary tree.   struct...

5 minutes read.

Tree in Data Structure

Tree A tree is a non-linear data structure by which hierarchical data is displayed. As we know that there are many trees in the forest, similarly the data structure also contains...

3 minutes read.

Convert binary tree to a doubly linked list

Implementation //creating a C++ program for the transition of a binary tree into a linked list. #include <iostream> using namespace std; /* Firstly, let’s create a binary tree that will help us in setting...

4 minutes read.

Heap Data Structure

In this article, we will learn in detail about Heap (Min heap and Max heap). Before going to the main topics, let’s have a look at what is complete binary...

19 minutes read.

B+ Tree Program in Q language

A B+ tree is just an improvised version of a self-balancing and well-maintained tree in which all the key values that hold valuable information is present at the bottom, which...

9 minutes read.

Operations of B Tree in C++ Language

B tree tends to be a self-aligning and balancing tree that helps us organise our data and document safely. We know that every data or information in the B tree...

9 minutes read.

Advantages and Disadvantages of Linked List

Advantages of Linked List The linked list is a dynamic data structure.You can also decrease and increase the linked list at run-time. That is, you can allocate and deallocate memory at...

3 minutes read.

Adding one to the number represented an array of digits

You have given one array, which consists of values which represent the different digits of a number. You have to add 1 to this number and store the result in...

3 minutes read.

Reverse the Singly Linked List in C

Reverse the Singly Linked List in C This article has given a singly linked list and will reverse the linked list by changing the links between nodes. Example:                         Input:  2 -> 4...

3 minutes read.

Construction of B tree in Data Structure

A B-tree is a type of balanced tree data structure that is commonly used in file systems and databases to improve the efficiency of search, insert, and delete operations. The structure...

4 minutes read.

Rotate a Singly Linked List

Rotate a Singly Linked List This article will explain how we can rotate the singly linked list. Here we have given a singly linked list, and we need to rotate this...

4 minutes read.

Tree terminology in Data structures

Data structures The storage used to organize and store data is known as a data structure, and it is a method where data can be arranged on a computer to be...

6 minutes read.

Singly Linked list

Singly Linked list A singly linked list is a kind of linked list which is unidirectional. If we talk about singly linked list, then we can say it can be traversed...

3 minutes read.

Find the fractional (n/kth) node in the linked list

Find the fractional (n/kth) node in the linked list In this problem, we have given a singly linked list and a number k. Here we need to find the (n/k)th element...

2 minutes read.