[LeetCode]110. Balanced Binary Tree
来源:互联网 发布:公司域名是什么样的 编辑:程序博客网 时间:2024/06/06 02:34
110. Balanced Binary Tree
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.
解法一:递归计算节点的高度
/** * 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) { if(root == NULL) return true; if(abs(height(root->left) - height(root->right)) > 1) return false; return isBalanced(root->left) && isBalanced(root->right); } int height(TreeNode* root){ if(root == NULL) return 0; return max(height(root->left), height(root->right))+1; }};
解法二:后序遍历
/** * 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) { // depth代表当前节点的深度 int depth = 0; return is(root, depth); } // 不仅返回当前节点的左右子树是否平衡的bool值,还要返回当前传入节点的最大深度 bool is(TreeNode* root, int& depth){ // 终止条件,假设空树也是BST if(root == NULL){ depth = 0; return true; } int left = 0; int right = 0; // 如果左右都是平衡的 if(is(root->left, left) && is(root->right, right)){ int dif = abs(left -right); if(dif <= 1){ depth = max(left, right) + 1; return true; } } // 不平衡的出现后就不需要管深度了,直接返回就完了,返回一次false,后面全是false return false; } };
阅读全文
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
- Kubernetes是什么?
- 1039. 到底买不买(20)
- 用户注册之验证码
- Log4j 2使用教程二 【详解】
- 【优化】Unity3D图形渲染优化、渲染管线优化、图形性能优化
- [LeetCode]110. Balanced Binary Tree
- 找女朋友
- 解决Android Studio Gradle DSL method not found: 'android()'问题
- 2017全球软件架构技术大会特邀四十位技术领袖以及一线实战专家
- Java初学者的学习路线建议
- 3158: 千钧一发/3275: Number
- Linux系统教程
- 比较好用的java导出大数据量Excel
- 设计模式-原型模式