[leetcode][tree][dfs] Balanced Binary Tree

来源:互联网 发布:阿里云主机干什么的 编辑:程序博客网 时间:2024/06/06 02:34

题目:

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) {        int height;        return isBalancedCore(root, height);    }private:    bool isBalancedCore(TreeNode* root, int &height){//如果该树不平衡,返回false;如果该树平衡,返回true并通过height返回该树的高度        if(NULL == root){//递归终止条件,此时必须给height赋0值            height = 0;            return true;        }        int leftHeight;//左子树的高度(后面函数调用过程中将赋值)        int rightHeight;//右子树的高度(后面函数调用过程中将赋值)        if(isBalancedCore(root->left, leftHeight) && isBalancedCore(root->right, rightHeight) && abs(leftHeight-rightHeight) <= 1){            height = 1+max(leftHeight, rightHeight);            return true;        }        return false;    }};


0 0
原创粉丝点击