Day 18 胜利属于达瓦里氏!
1. 剑指 Offer 55 - I. 二叉树的深度
思路: 递归模拟 返回左右子树的最大高度 加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:
int maxDepth(TreeNode* root) {
if(!root) return 0;
return 1 + max(maxDepth(root -> left), maxDepth(root -> right));
}
};
2.剑指 Offer 55 - II. 平衡二叉树
思路 :其实就是模拟题目意思 avl树的定义就是保证每一个节点的左子树与右子树的最大深度的差值的绝对值小于等于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:
int maxhigh(TreeNode* root){
if(!root) return 0;
return 1 + max(maxhigh(root -> left), maxhigh(root -> right));
}
bool isBalanced(TreeNode* root) {
if(!root) return true;
auto left = maxhigh(root -> left);
auto right = maxhigh(root -> right);
return abs(left - right) <= 1 && isBalanced(root -> left) && isBalanced(root ->right);
}
};