判断一颗二叉树是否是平衡二叉树
2012-07-25 01:10
483 查看
方法一,参考 /article/9149058.html
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);
}
方法一用的是线序遍历的思想, 缺点是,重复计算了多次子树的深度
方法二用的是后序遍历的思想,免去了对子树的重复计算
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);
}
方法一用的是线序遍历的思想, 缺点是,重复计算了多次子树的深度
方法二用的是后序遍历的思想,免去了对子树的重复计算
template<typename T> bool isBalanceTree(BSTreeNode<T> *pbs, int &curLen) { if (pbs==NULL) { return true; } int leftLen; int rightLen; bool isLeftBalance; bool isRightBalance; leftLen = rightLen = 0; isLeftBalance = isRightBalance = false; isLeftBalance = isBalanceTree(pbs->left, leftLen); isRightBalance = isBalanceTree(pbs->right, rightLen); curLen = leftLen >= rightLen ? leftLen+1 : rightLen+1; if (isLeftBalance == true && isRightBalance == true) { if (abs(depthLeft-depthRight) <= 1) { return true; } } return false; }
相关文章推荐
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 每日一练(40) - 判断二叉树是否是一颗平衡二叉树
- 判断一颗二叉树是否为平衡二叉树
- 后序遍历求解判断一颗二叉树是否为平衡二叉树
- java数据结构-二叉树-判断一颗二叉树是否为平衡二叉树
- 每日一题之判断一棵二叉树是否是平衡二叉树以及求一颗二叉树的镜像
- day12之判断一棵二叉树是否是平衡二叉树+求一颗二叉树的镜像+判断一个数在二维数组中是否存在
- 判断一颗二叉树是否是平衡二叉树
- 判断一颗二叉树是否为平衡二叉树
- 【算法】判断一颗二叉树是否是平衡二叉树
- 【面试题】剑指Offer-39-求二叉树的深度和判断一颗树是否为平衡二叉树
- 判断一棵二叉树是否是平衡二叉树并求一颗二叉树的镜像——题集十
- 判断一颗二叉树是否是平衡二叉树
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 判断一颗二叉树是否为平衡二叉树(AVL)
- 【二叉树8】判断一颗树是否是平衡二叉树
- Leetcode 110 判断一颗二叉树是否是平衡二叉树
- -判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 判断一颗二叉树是否对称