leetCode(20):Balanced binary tree
2015-06-22 08:52
357 查看
Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
方法一:求出左右子树的深度,如果差值大于1,则返回false,否则递归判断其左右孩子结点。但该方法每一次递归都要计算一次子结点的深度,出现重复计算。
方法二:设置一个变量,用于记录深度,不必须重复计算。
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
方法一:求出左右子树的深度,如果差值大于1,则返回false,否则递归判断其左右孩子结点。但该方法每一次递归都要计算一次子结点的深度,出现重复计算。
int maxDepth(TreeNode* root) { if(NULL==root) return 0; int left=maxDepth(root->left); int right=maxDepth(root->right); return 1+(left>right?left:right); } bool isBalanced(TreeNode* root) { if(NULL==root) return true; int leftLength=maxDepth(root->left); int rightLength=maxDepth(root->right); int diff=leftLength-rightLength; if(diff>1 || diff<-1) return false; return isBalanced(root->left) && isBalanced(root->right); }
方法二:设置一个变量,用于记录深度,不必须重复计算。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool isBalanced(TreeNode* root,int *depth) { if(NULL==root) { *depth=0; return true; } int leftLength,rightLength; if(isBalanced(root->left,&leftLength) && isBalanced(root->right,&rightLength)) {//若两棵子树都是平衡二叉树 int diff=leftLength-rightLength; if(diff<=1 && diff>=-1) { *depth=1+(leftLength>rightLength?leftLength:rightLength); return true; } } return false; } bool isBalanced(TreeNode* root) { int depth; return isBalanced(root,&depth); } };
相关文章推荐
- leetCode(20):Balanced binary tree 分类: leetCode 2015-06-22 08:52 190人阅读 评论(0) 收藏
- HDOJ 2189 悼念512四川汶川大地震遇难者——来生一起走 【生成函数】
- BDB (Berkeley DB)简要数据库(转载)
- 轻量级持久存储系统--MemcacheDB
- DB2 存储过程 - 利用 dbms_output.put_line 输出至屏幕
- linux通过使用mail发送电子邮件
- Java知多少(100)图像处理基础
- 从Quagga到DCE的处理流程
- Arrays数组。。
- c#中用DirectShow实现媒体播放器的核心(1) DirectShow简介
- Extract ISBN From PDF and EPUB and Query Matadata From ISBN Database
- Afaria 7 SP5中的SSP URL
- c#中用DirectShow实现媒体播放器的核心(1) DirectShow简介
- Java--Reflect(反射)专题4——获取成员变量以及构造函数信息
- 上周热点回顾(6.15-6.21)
- 内存泄露调试
- 文本编辑工具----vim
- 搜索帮助中根据界面条件显示实现方法一
- WCF医院管理系统技术解析(十二)化验登记
- 服务计算基础知识 UDDI SOAP WSDL特性 SOA 设计原则