【leetcode】110. Balanced Binary Tree
来源:互联网 发布:算法基本特征 编辑:程序博客网 时间:2024/05/16 16:21
一、题目描述
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)两边的子树的高度相差不超过1。(2)两棵子树都是平衡二叉树
思路:针对条件(1)要比较高度的话,需要写一个函数求一棵树的高度。
针对条件(2)很容易就想到可以用递归的方法
c++代码(16ms,14.24%)
/** * 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: int height(TreeNode* root){ //求一棵树的高度 if(root == NULL) return 0; else if((root->left == NULL) && (root->right == NULL)) return 1; else return max(height(root->left), height(root->right))+1; } bool isBalanced(TreeNode* root) { if(root == NULL) return true; else if((root->left == NULL) && (root->right == NULL)) return true; else{ if(abs(height(root->left)-height(root->right)) > 1) return false; else return (isBalanced(root->left) && isBalanced(root->right)); } }};
思路一样,代码可以进一步简化为:
class solution {public: int depth (TreeNode *root) { if (root == NULL) return 0; return max (depth(root -> left), depth (root -> right)) + 1; } bool isBalanced (TreeNode *root) { if (root == NULL) return true; int left=depth(root->left); int right=depth(root->right); return abs(left - right) <= 1 && isBalanced(root->left) && isBalanced(root->right); }};
代码2:
class solution {public:int dfsHeight (TreeNode *root) { if (root == NULL) return 0; int leftHeight = dfsHeight (root -> left); if (leftHeight == -1) return -1; int rightHeight = dfsHeight (root -> right); if (rightHeight == -1) return -1; if (abs(leftHeight - rightHeight) > 1) return -1; return max (leftHeight, rightHeight) + 1; } bool isBalanced(TreeNode *root) { return dfsHeight (root) != -1; }};
0 0
- LeetCode 110. Balanced Binary Tree
- [LeetCode]110.Balanced Binary Tree
- 【LeetCode】110.Balanced Binary Tree
- [Leetcode] 110. Balanced Binary Tree
- LeetCode --- 110. Balanced Binary Tree
- [leetcode] 110.Balanced Binary Tree
- [leetcode]110. Balanced Binary Tree
- LeetCode:110. Balanced Binary Tree
- 110. Balanced Binary Tree LeetCode
- [LeetCode]110. Balanced Binary Tree
- Leetcode 110. Balanced Binary Tree
- LeetCode 110. Balanced Binary Tree
- LeetCode *** 110. Balanced Binary Tree
- leetcode 110. Balanced Binary Tree
- LeetCode 110. Balanced Binary Tree
- LeetCode 110. Balanced Binary Tree
- #leetcode#110. Balanced Binary Tree
- leetcode-110. Balanced Binary Tree
- 警察和厨师不可告人的秘密
- 2016.6.13 通过虚拟机安装hadoop完全分布式集群
- IOS相机字体英文转中文
- shell脚本 实现在git下两个提交下文件差异并打包
- 第9章 有没有替代原因
- 【leetcode】110. Balanced Binary Tree
- instanceof
- Java编程思想21.2.1实例
- CSP考试 2016年04月第1题 折点计数 C语言实现
- redis面试题总结
- iOS开发-Could not find a storyboard named 'Main' in bundle NSBundle
- 网页调用Activex实现,ocx封装成cab文件
- VS中VC++目录中的$是什么意思
- Hibernate Search-----关联检索