在不熟悉递归的情况下,用了两次递归来完成该题,做一纪念
{
{//解决过程两次用到递归,完美、快速地解决了这道题;首先一个求高度的函数这个函数要用到递归;之后在主函数里面,比较两个子树的高度差,如果二者平衡,也要继续分别递归二者;public: bool isBalanced(TreeNode* root) { if (root == NULL) return true; int delta = abs(TreeHeight(root->left) – TreeHeight(root->right)); if (delta>1) return false; else return (isBalanced(root->left) && isBalanced(root->right)); } private: // 计算以root为根节点的树的高度,用递归 int TreeHeight(TreeNode* root) { if (root == NULL) return -1; else if(!root->left && !root->right) return 0; else return 1+max(TreeHeight(root->left), TreeHeight(root->right)); } };