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