数据结构学习小记

来源:互联网 发布:松下h3自动门重量算法 编辑:程序博客网 时间:2024/05/17 01:30

    最近在学数据结构,对递归的算法老是绕不过来。在此转一些用到递归的算法,以供学习参考

 

    问题:如何判定一棵二叉树是否是平衡二叉树<转来的>

   

    首先编写一个计算二叉树深度的函数,利用递归实现。

template<typename T>static int Depth(BSTreeNode<T>* pbs){if (pbs==NULL)return 0;else{int ld = Depth(pbs->left);int rd = Depth(pbs->right);return 1 + (ld >rd ? ld : rd);}}

下面是利用递归判断左右子树的深度是否相差1来判断是否是平衡二叉树的函数:

template<typename T>static bool isBalance(BSTreeNode<T>* pbs){if (pbs==NULL) return true;int dis = Depth(pbs->left) - Depth(pbs->right);if (dis>1 || dis<-1 )return false;elsereturn isBalance(pbs->left) && isBalance(pbs->right);}

 

 

 

ref:http://www.zhuxinquan.com/cn/2006/03/post_3.html 

原创粉丝点击