Online C++ Compiler

#include<iostream> using namespace std; struct Node { int key; struct Node *leftChild, *rightChild; }; Node* createNode(int key) { Node* node = new Node; node->key = key; node->leftChild = node->rightChild = NULL; return node; } bool isLeaf(Node *currentNode) { return (currentNode->leftChild == NULL && currentNode->rightChild == NULL); } int deepestOddLvlDepth(Node *currentNode, int currentLevel=0) { if ( currentNode == NULL) return 0; currentLevel ++; if ( currentLevel % 2 != 0 && isLeaf(currentNode)) return currentLevel; int leftChildLevel = deepestOddLvlDepth(currentNode->leftChild,currentLevel); int rightChildLevel = deepestOddLvlDepth(currentNode->rightChild,currentLevel); return max(leftChildLevel,rightChildLevel); } int main() { Node *root = createNode(15); root->leftChild = createNode(33); root->rightChild = createNode(18); root->rightChild->leftChild = createNode(19); root->rightChild->rightChild = createNode(20); root->rightChild->rightChild->leftChild = createNode(28); root->rightChild->rightChild->rightChild = createNode(29); cout << "The depth of the deepest odd level leaf node is: "<<deepestOddLvlDepth(root) << endl; return 0; }