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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
/** * 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: int flag = 1; int dfs(TreeNode* root) { if(root == NULL) return 1; int l, r; if(root->left == NULL) { l = 0; } else { l = dfs(root->left); } if(root->right == NULL) { r = 0; } else { r = dfs(root->right); } if(abs(l-r) >= 2) { flag = 0; } return (l > r ? l : r) + 1; } bool isBalanced(TreeNode* root) { dfs(root); return flag; } }; |
❤ 点击这里 -> 订阅《PAT | 蓝桥 | LeetCode学习路径 & 刷题经验》by 柳婼