设为首页 加入收藏

TOP

[互联网面试笔试汇总C/C++-16] 判断一棵二叉树是否是平衡二叉树
2014-11-23 21:45:51 】 浏览:5675
Tags:互联网 面试 笔试 汇总 C/C -16 判断 是否是 平衡
首先,看一下平衡二叉树的定义:
平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
思路:利用递归的思想
代码:
int DepthTree(BSTreeNode *pbs)    
{    
    if (pbs==NULL)    
        return 0;    
    else    
    {    
        int leftLength=DepthTree(pbs->left);    
        int rigthLength=DepthTree(pbs->right);    
        return 1+(leftLength>rigthLength   leftLength:rigthLength);    
    }    
}    
    
bool isBalanceTree(BSTreeNode *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);    
}    

改进:这样实际上是有很多重复计算的,如果想进一步提高效率的话可以考虑保存递归过程中的结果。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[互联网面试笔试汇总C/C++-14] 判.. 下一篇[互联网面试笔试汇总C/C++-15] 判..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目