isBalancedTree

来源:互联网 发布:unity3d 设置技能cd 编辑:程序博客网 时间:2024/06/02 14:30
/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     struct TreeNode *left; *     struct TreeNode *right; * }; */int heightForNode(struct TreeNode *node){  // NULL nodes are height 0  if (node == NULL) {    return 0;  }  // Leaf nodes are height 1  if (node->left == NULL && node->right == NULL) {    return 1;  }  int left_height = heightForNode(node->left);  int right_height = heightForNode(node->right);  // Return the greater of the left and right height, plus 1 for the current node  return (left_height > right_height ? left_height : right_height) + 1;}bool isBalanced(struct TreeNode* root){  // Empty nodes are balanced..  if (root == NULL) return true;  // The heights of the two children must differ no greater than by 1  // Both left and right side have to be balanced  if (abs(heightForNode(root->left) - heightForNode(root->right)) <= 1 &&      isBalanced(root->left) &&      isBalanced(root->right)) {    return true;  }  return false;}

0 0