1.问题描述: 判断一颗二叉树是否是平衡二叉树。 2.问题分析: 平衡二叉树要求左子树和右子树的高度相差为1,且左右子树都是平衡二叉树,显然需要计算二叉树高度的函数。 3.代码: template<typename T> int DepthTree(BSTreeNode<T> *pbs) { if (pbs==NULL) return 0; else { int leftLength=DepthTree(pbs->left); int rigthLength=DepthTree(pbs->right); return 1+(leftLength>rigthLength ? leftLength:rigthLength); } } template<typename T> bool isBalanceTree(BSTreeNode<T> *pbs) { if (pbs==NULL) { return true; } int depthLeft=DepthTree(pbs->left); int depthRight=DepthTree(pbs->right); if (abs(depthLeft-depthRight)>1) return false; else return isBalanceTree(pbs->left) && isBalanceTree(pbs->right); } 4.测试: