check all leaves node at same level
/***
chekc
if all leaves are at same level
similiar
with get the height of the tree
***/
#include<iostream>
using namespace std;
struct node {
int val;
node *left, *right;
};
bool samelevel(node *root, int &level) {
if (root == nullptr) { //empty node
level = -1;
return true;
}
if(root->left == nullptr && root->right == nullptr) { // leaf node
level = 0;
return true;
}
int left, right;
if(samelevel(root->left, left) && samelevel(root->right, right)) {
if (left == -1) level = right+1;
else if (right == -1) level = left+1;
else {
if (left != right) return false;
else level = left+1;
}
} else return false;
return true;
}
void main() {
node nodes[8];
nodes[0].left = &nodes[1];
nodes[0].right = &nodes[2];
nodes[1].left = &nodes[3];
nodes[1].right = nullptr;
nodes[2].left = nullptr;
nodes[2].right = &nodes[6];
for(int i=0; i<8; i++) {
nodes[i].val = i;
if (i > 2)
{
nodes[i].left = nullptr;
nodes[i].right = nullptr;
}
}
nodes[3].left = &nodes[7];
nodes[6].right = &nodes[5];
node *root = nodes;
int level;
if (samelevel(root, level))
{
cout<<"same"<<endl;
} else cout<<"not"<<endl;
}
Comments
Post a Comment