Balanced Binary Tree

/**

 * 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:

    bool isBalanced(TreeNode* root) {

        if(root==NULL) return true;

        int h;

        return height(root,0,h);

    }

    bool height(TreeNode * root, int h0,int &h1){   

        int h2,h3;

        if(root==NULL) {h1=h0;return true;}

        if(root->left == NULL && root->right == NULL) {h1=h0+1; return true;}

        

        if(!height(root->left,h0+1,h2)) return false;

        if(!height(root->right,h0+1,h3)) return false;

        

        h1=max(h2,h3);

        return abs(h3-h2)>1?false:true;

  

    }

};

注意:想清楚参数的意义。  尤其h0,表示调用该结点之前,已有的高度。

你可能感兴趣的:(binary)