day94—树—平衡二叉树判断(LeetCode-110)
题目描述
给定一个二叉树,判断它是否是 平衡二叉树
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:true
示例 2:
输入:root = [1,2,2,3,3,null,null,4,4] 输出:false
示例 3:
输入:root = [] 输出:true
提示:
- 树中的节点数在范围
[0, 5000]
内 -104 <= Node.val <= 104
解决方案:
1、平衡二叉树:对于树上的任意节点,其两侧节点的最大深度的差值不得大于 1
2、深度问题递归处理:help(TreeNode* root){ ... }
函数源码:
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/ class Solution { public:int help(TreeNode* root){if(!root) return 0;int left = help(root->left);int right = help(root->right);if(left == -1 || right==-1 || abs(left-right)>1){return -1;}return 1+max(left,right);}bool isBalanced(TreeNode* root) {return help(root) != -1;} };