糖逗 发表于 2021-1-27 17:27:16

C++刷LeetCode(面试题 04.04. 检查平衡性)【树】【递归】

题目描述:

实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。


示例 1:
给定二叉树
    3
   / \
920
    /\
   15   7
返回 true 。
示例 2:
给定二叉树
      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;
    }
};
页: [1]
查看完整版本: C++刷LeetCode(面试题 04.04. 检查平衡性)【树】【递归】