#include class TreeNode { public: TreeNode *lc; TreeNode *rc; int data; TreeNode(int d) { data = d; lc = 0; rc = 0; } void insert(int x,int flag); int get(); }; void TreeNode::insert(int i,int flag) { if (flag == 1) { if (lc != 0) lc->insert(i,flag); else lc = new TreeNode(i); } else { if (rc != 0) rc->insert(i,flag); else rc = new TreeNode(i); } } int TreeNode::get() { int a = 0; int b = 0; if (lc != 0) a = lc->get(); if (rc != 0) b = rc->get(); if (a > b) { return a+1; } else { return b+1; } } class Tree { TreeNode *root; public: Tree() { root = new TreeNode(5); } void insert(int i) { if (i > 5) { root->insert(i,0); } else { root->insert(i,1); } } void print() { printf("%d\n",root->get()); } }; void main() { int data[] = {9,2,1,4,7,5,7}; Tree *aTree = new Tree(); for (int i = 0; i < 7; i++) { aTree->insert(data[i]); } aTree->print(); }