void BinaryTree::findBalancedTree(Node* node, int& height, int& size, int N, Node*& out)

{

if(!node)

{

size =0;

height = 0;

return;

}

int lheight = 0, rheight = 0, lsize = 0, rsize = 0;

findBalancedTree(node->left, lheight, lsize, N, out);

findBalancedTree(node->right, rheight, rsize, N, out);

if(abs(lheight - rheight) <= 1 && lsize + rsize + 1 == N)

{

out = node;

}

height = max(lheight, rheight) + 1;

size = lsize + rsize + 1;

}

## No comments:

## Post a Comment