- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# Continuous Tree in C++

A Continuous Tree is defined as a tree with any path from root node to leaf node has value or weight of nodes such that the absolute difference between the parent node and all of its direct children nodes is always 1.

If we pick any node on the path from root to leaf, then

*|weight of node-weight of left child node|=|weight of left child node-weight of node| = 1, this
holds true for right child as well*

*|weight of node-weight of right child node|=|weight lof right child node-weight of node| = 1*

**Diagram**

Let us understand with examples.

The tree below is continuous as absolute difference between parent nodes and their child is always 1.

The tree below is not qualified for being a Continuous Tree.

## Algorithm to Find if tree is Continous

If root is NULL, return 1

If it is a leaf node, return 1 as the tree has been Continuous that's why the leaf node reached.

If the left subtree is empty check continuity of the current node with the right child ( calculate absolute difference of weights) and continue for the right subtree recursively.

If the right subtree is empty check continuity of the current node with the left child ( calculate absolute difference of weights) and continue for the left subtree recursively.

Else calculate absolute difference with weights of left and right child and continue for left and right subtrees, recursively.

## Pseudocode

// Function to check tree is continuous or not struct btreeNode{ int data; btreeNode* left, * right; }; int isContinuous(btreeNode *root){ // if node is NULL return 1, exit condition if (root == NULL) return 1; //if leaf node is reached then tree must be continous during this path if (root->left == NULL && root->right == NULL) return 1; // if no left child if (root->left == NULL) return (abs(root->data - root->right->data) == 1) && isContinuous(root->right); // if no right child if (root->right == NULL) return (abs(root->data - root->left->data) == 1) && isContinuous(root->left); // calculate absoute difference return abs(root->data - root->left->data)==1 && abs(root->data - root->right->data)==1 && isContinuous(root->left) && isContinuous(root->right); }

- Related Questions & Answers
- Continuous Subarray Sum in C++
- Shortest Unsorted Continuous Subarray in Python
- Longest Continuous Increasing Subsequence in C++
- When do we need Continuous Compounding?
- Maximize number of continuous Automorphic numbers in C++
- Continuous-Time Vs Discrete-Time Sinusoidal Signal
- Properties of Continuous-Time Fourier Transform (CTFT)
- Convolution Property of Continuous-Time Fourier Series
- Cascade Form Realization of Continuous-Time Systems
- Parallel Form Realization of Continuous-Time Systems
- How to plot a 3D continuous line in Matplotlib?
- What is Continuous Testing in DevOps(Definition, Benefits, Tools)?
- Parseval’s Theorem in Continuous-Time Fourier Series
- PHP program to print continuous character pattern triangle
- Direct Form-I Realization of Continuous-Time Systems