《程序员面试金典》二叉树平衡检查
来源:互联网 发布:js word.application 编辑:程序博客网 时间:2024/04/28 01:13
【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题目链接:http://www.nowcoder.com/practice/b6bbed48cd864cf09a34a6ca14a3976f?rp=1&ru=/ta/cracking-the-coding-interview&qru=/ta/cracking-the-coding-interview/question-ranking
题目描述
实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。
给定指向树根结点的指针TreeNode* root,请返回一个bool,代表这棵树是否平衡。
思路
最简单的方法是每个节点都使用递归求解其深度,然后再去比较,但是这样无疑会带来大量无谓的操作,效率不高
我们可以从根节点一直搜索到叶子结点,并在回溯的过程中返回其深度,并同层相比较,一旦有不满足的情况,就直接结束。
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Balance{public:bool isBalance(TreeNode *root){// write code hereif(root==nullptr)return true;return checkHeight(root)>=0;}int checkHeight(TreeNode *root){if(root==nullptr)return 0;int leftHeight = checkHeight(root->left);if(leftHeight==-1)return -1;int rightHeight = checkHeight(root->right);if(rightHeight==-1)return -1;if(abs(leftHeight-rightHeight)>1)return -1;return max(leftHeight,rightHeight)+1;}};
0 0
- 《程序员面试金典》二叉树平衡检查
- 程序员面试金典题解 二叉树平衡检查
- 程序员面试金典——二叉树平衡检查
- 程序员面试金典:二叉树平衡检查、有向路径检查
- 二叉树平衡检查之程序员面试经典
- 程序员面试经典--检查二叉树是否平衡
- 程序员面试金典: 9.4树与图 4.1实现一个函数检查二叉树是否平衡。
- 程序员面试金典:双栈排序、二叉平衡检查、输出单层节点
- 《程序员面试金典》--平衡二叉树的检测
- 程序员面试金典: 9.4树与图 4.1实现一个函数检查二叉树是否平衡——O(N)时间解法
- 二叉树平衡检查
- 二叉树平衡检查
- 二叉树平衡检查
- 二叉树平衡检查
- 二叉树平衡检查
- 二叉树平衡检查
- 二叉树平衡检查
- 二叉树平衡检查
- HBase 数据模型
- 常用安全测试用例(二)
- IOS开发之APP之间的相互通讯
- 徐小明:低位杀跌并不可怕
- Python改回之前版本的方法
- 《程序员面试金典》二叉树平衡检查
- python:PyInstaller打包发布单个文件错误struct.error: argument for 's' must be a string解决
- 多线程编程技术
- 使用selector修改TextView中字体的颜色
- 【网络安全】Rop绕过DEP和ASRL流程实例介绍
- Sql Server 2000 的备份
- vim 底行模式下的查找跟替换
- NAT的原理与类型
- 【IOS开发】如何画1像素的线