A balanced tree is one in which no two leaf nodes differ in distance from the root node by more than one.
Solution #1: The most straight forward approach would be to calculate the maximum and minimum depth of the tree and then find out their difference. Here is the code,
Solution #1: The most straight forward approach would be to calculate the maximum and minimum depth of the tree and then find out their difference. Here is the code,
int maxDepth(node* root) { if(NULL == root) return 0; int leftDepth = maxDepth(root->left); int rightDepth = maxDepth(root->right); return 1 + (leftDepth > rightDepth ? leftDepth:rightDepth); } int minDepth(node* root) { if(NULL == root) return 0; int leftDepth = minDepth(root->left); int rightDepth = minDepth(root->right); return 1 + (leftDepth < rightDepth ? leftDepth:rightDepth); } int isBalanced(node* root) { if(maxDepth(root) - minDepth(root) > 1) return 0; else return 1; }
No comments:
Post a Comment