leetcode 110 平衡二叉树

73 阅读1分钟

leetcode 110 平衡二叉树

思路

  1. dfs 左右子树,每一层都记录最大记录深度 + 1;
  2. 在某个结点深度不合法时,false;

题解

class Solution {
public:
    bool isBalanced(TreeNode* root) {
        dfs(root);
        return flag;
    }
private:
    bool flag = true;
    int dfs(TreeNode* root) {
        if(root == NULL) return 0;//递归结束条件
        int left_d = dfs(root->left);//记录深度
        int right_d = dfs(root->right);
        //左右深度不合法
        if(abs(left_d - right_d) > 1) flag = false;
        //递归返回时每一层最大深度+1
        return max(left_d, right_d) + 1;
    }
};