平衡二叉树判定方法(c++)实现
2024-09-05 07:04:45
!!版权声明:本文为博主原创文章,版权归原文作者和博客园共有,谢绝任何形式的 转载!!
作者:mohist
-- 欢迎指正--
平衡二叉树特点:
任意一个结点的平衡因子(左子树高度 - 右子树高度)的绝对值不会超过1。
下面的方法,若是平衡二叉树,则还会返回树的高度
结点结构:
struct node
{
int data;
int height;
node *lc;
node *rc;
node()
: data(0)
, height(0)
, lc(0)
, rc(0)
{ }
};
函数源码:
// 判断是否为平衡二叉树,若是,则返回树的高度
// false - 不是平衡二叉树,true-是平衡二叉树
bool is_avl_tree(node *pnode, int &deepth)
{
if ( NULL == pnode)
{
deepth = 0;
return true;
} int left_h = 0;
int right_h = 0; if (is_avl_tree(pnode->lc, left_h) && is_avl_tree(pnode->rc, right_h))
{
int diff = abs(left_h - right_h);
if (1 < diff)
return false;
deepth = 1 + ( (left_h > right_h) ? left_h : right_h); return true;
} return false;
}
最新文章
- Linux 架构
- 嵌入式Linux驱动开发日记
- 【mysql】一个关于order by排序的问题
- 2D Tookit (一) 精灵切割
- Dom方式解析XML
- SQL 能做什么?
- 【译】typeof null的前世今生
- windows下一个,OracleServiceXXX和Oracle 关系实例
- XPath语法
- Cesium 鼠标拾取椭球、地形、模型坐标点(经度+纬度+高程)
- openjudge(三)
- Hadoop平台基本组成
- flutter 解析json
- Hdoj 1785.You Are All Excellent 题解
- 如何让eclipse恢复默认布局
- win7(64位)Sql server 用T-sql读取本地数据文件dbf的数据文件
- hibernate中基于主键映射1-1关联关系和基于外键映射1-1关联关系的不同
- 在vue中使用weixin-js-sdk自定义微信分享效果
- 003-Go初探Iris
- 架构-到底什么时候该使用MQ【转】