二叉树平衡检查
2015-09-01 19:56
225 查看
实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。
给定指向树根结点的指针TreeNode* root,请返回一个bool,代表这棵树是否平衡。
给定指向树根结点的指针TreeNode* root,请返回一个bool,代表这棵树是否平衡。
struct TreeNode { int val; char data; struct TreeNode *left; struct TreeNode *right; // TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; class Balance { public: void createBiTree(TreeNode *T) { char c; cin >> c; if('#' == c) T = NULL; else { T =new TreeNode(); T->data = c; createBiTree(T->left); createBiTree(T->right); } } int deep(TreeNode * T) { if(T==NULL) return 0; int left = deep(T->left); int right = deep(T->right); return left>right?left+1:right+1; } bool isBalance(TreeNode* root) { // write code here if (root==NULL) { return true; } int left=deep(root->left); int right= deep(root->right); if (abs(left-right)>1) { return false; }else { return isBalance(root->left)&&isBalance(root->right); // 返回左子树和右子树的深度之差 } } }; void main() { Balance A; TreeNode *T=NULL; A.createBiTree(T); cout<<A.isBalance(T)<<endl; }
相关文章推荐
- springmvc中 ajax请求错误,返回406,并一直进入error的回调方法,以及返回参数为Object
- BZOJ 2226: [Spoj 5971] LCMSum( 数论 )
- excel的XML映射
- python学习(1)--python处理文本
- 将EBS设为首页worklist删除误报
- Linux下Tomcat的启动和停止(包括杀死tomcat进程)
- 【重构】m站重构思路
- Delphi 文件处理
- hdu 2003 求绝对值
- iOS学习之SQLite
- 我的第一篇(感受)
- ifconfig: SIOCSIFFLAGS: Invalid argument ---dm9000 网卡
- 我体验过VR,还行吧
- C语言结构体(struct)理解
- stringstream 字符串流
- 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
- Hadoop学习3_在HADOOP集群中添加节点和删除节点
- Inter Edsion添加USB有线网卡解决办法
- 淘宝 聚划算 整点免费 支付宝延时时间1秒
- 七种JVM收集器比较