|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目描述:
- 实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。
- 示例 1:
- 给定二叉树 [3,9,20,null,null,15,7]
- 3
- / \
- 9 20
- / \
- 15 7
- 返回 true 。
- 示例 2:
- 给定二叉树 [1,2,2,3,3,null,null,4,4]
- 1
- / \
- 2 2
- / \
- 3 3
- / \
- 4 4
- 返回 false 。
复制代码
- /**
- * 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 {
- private:
- bool res = true;
- public:
- int depth(TreeNode* curr){//树深度计算
- if(curr == NULL)return 0;
- int left = depth(curr -> left);
- int right = depth(curr -> right);
- if(abs(left - right) > 1){
- res = false;
- }
- return max(left, right) + 1;
- }
- bool isBalanced(TreeNode* root) {
- //递归
- depth(root);
- return res;
- }
- };
复制代码 |
|