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 binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int getHeight(TreeNode *root){ if(root==NULL)return 0; //获得左子树高度 int leftHeight=getHeight(root->left); if(leftHeight==-1)return -1; //获得右子树高度 int rightHeight=getHeight(root->right); if(rightHeight==-1)return -1; //判断左右子树高度差是否符合要求, 如果符合要求,则返回当前二叉树的高,如果不符合要求,则返回-1 if(abs(leftHeight-rightHeight)<=1) return max(leftHeight, rightHeight)+1; return -1; } bool isBalanced(TreeNode *root) { if(root==NULL)return true; int height=getHeight(root); if(height==-1)return false; return true; } };
LeetCode: Balanced Binary Tree [110],布布扣,bubuko.com
LeetCode: Balanced Binary Tree [110]
原文地址:http://blog.csdn.net/harryhuang1990/article/details/28384131