Balanced Binary Tree

来源:互联网 发布:拍电影知乎 编辑:程序博客网 时间:2024/05/22 10:54
Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

关键思路:求左右子树的深度,比较是否平衡

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:int max(int a, int b){if(a > b)return a;else return b;}   int helper(TreeNode* root)    {    if(root == NULL)    return 0;    return 1 + max(helper(root -> left), helper(root -> right));    }    bool isBalanced(TreeNode* root) {    if(root == NULL)    return true;    int lh = helper(root -> left);    int rh = helper(root -> right);    if(lh == rh || lh - rh == 1 || lh - rh == -1)    return isBalanced(root -> left) && isBalanced(root -> right);    return false;    }};


0 0
原创粉丝点击