平衡二叉树判断
来源:互联网 发布:淘宝不可以微信付款吗 编辑:程序博客网 时间:2024/05/10 10:05
平衡二叉树的定义:(1)必须是二叉树(可以是空树);(2)它的左右子树也应该是平衡二叉树,且左右子树的深度之差的绝对值不能超过1.(即可以为0,1)
struct Node{int data;Node *left;Node *right;};以上为节点的结构。题目:现需要设计一个函数来判断给定的二叉树是否为平衡二叉树。【给定二叉树的根节点为R】
(1)依据平衡二叉树的定义来判断,即需要求设计一个求取树深度的函数
int Deepth(Node *R){if(!R) return 0;else{ int left_deep = Deepth(R->left); int right_deep = Deepth(R->right); return 1+((left_deep>=right_deep)?left_deep:right_deep);}}
bool IsBiTree(Node *R){if(!R) return true;int left_deep = Deepth(R->left);int right_deep=Deepth(R->right);if(abs(left_deep - right_deep)>1) return false;else return IsBiTree(R->left)&&IsBiTree(R->Right); }
(2)直接递归判断方法。[写得风格有点糟糕,但愿思路没错]
bool IsBiTree(Node *R){if(!R)return true;if(R->left==NULL && R->right==NULL)return true;else if(R->left==NULL && R->right->right==NULL)return true;else if(R->right==NULL && R->left->left==NULL)//前三种情况均是平衡二叉树结束的情况return true;else if(R->left==NULL && R->right->right)return false;else if(R->right==NULL && R->left->left)return false;elsereturn IsBiTree(R->left)&&IsBiTree(R->right);}
- 判断平衡二叉树
- 判断二叉树平衡
- 平衡二叉树判断
- 判断平衡二叉树
- 判断平衡二叉树
- 平衡二叉树判断
- 判断平衡二叉树
- 判断平衡二叉树
- 平衡二叉树判断
- 判断平衡二叉树
- 判断平衡二叉树是否平衡
- 判断二叉树是否平衡
- 判断二叉树是不是平衡
- 判断二叉树是不是平衡
- 判断二叉树是否平衡
- 判断二叉树是不是平衡[
- 平衡二叉树的判断
- 判断二叉树是不是平衡
- Leetcode: Linked List Cycle
- outlook与安卓手机同步日历
- 醒醒吧
- colinux-cetos53-win7交叉编译环境配置
- 软件工程类面试笔试题
- 平衡二叉树判断
- python 建立vocabulary,包括去标点,split
- android组件之dialog
- 优先级队列--高并发度,高性能
- 进击的数据结构三之栈的顺序存储结构
- <<Windows核心编程(第五版)>>第九章用内核对象进行线程同步:9.3事件内核对象
- (高精度运算4.7.24)UVA 10013 Super long sums(大数加法——某一位的数字可能大于10)
- 开发Adobe AIR移动应用程序的考虑事项
- 一些常见的JS表单验证代码