剑指offer:平衡二叉树
所谓的平衡二叉树:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1;
定义个返回值为int型的getDepth函数,一个node指针,首先判断头节点为不为0,是返回0,分别定义左右子树的个数(层数)、当左右子树的高度进行相减,小于等于1是平衡二叉树;又定义了bool型的判断是不是平衡二叉树的函数IsBalanced_Solution,空树是平衡二叉树,当proot不是-1的时候,返回true是一个平衡二叉树!!!
class Solution{ public: int getDepth(TreeNode* node){ if(node ==nullptr) return 0; int left = getDepth(node->left); if(left==-1) return -1; int right = getDepth(node->right); if(right==-1) return -1; if (abs(left-right)>1) return -1; else return 1+max(left,right); } bool IsBalanced_Solution(TreeNode* pRoot){ if(pRoot==nullptr) return true; return getDepth(pRoot)!=-1; } };#剑指offer##23届找工作求助阵地#