分享
1、算法大厂——字节跳动面试题
2、2000页互联网Java面试题大全
3、高阶必备,算法学习
2 2
/ \
3 3
/ \
4 4
返回 false 。
题解:
一个树满足平衡二叉树的条件:每一棵树的左右子树高度差 < 2
特殊条件:
- 当root为null的时候表示空树,是平衡二叉树 ;
递归过程:
-
通过deep函数递归求得每个树的高度:即左右子树的高度的最大值 ;
-
递归判断所有的树,是否满足每一棵树的左右子树高度差 < 2 , 以及每一个树的子树同样需要满足
我们求树的高度的过程 :
方法一 : 递归
/**
-
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) {
if(root == NULL) return true ;
//满足左右子树的高度差值< 2 ,则表示是平衡树,递归求得每个树都是平衡树
return abs(deep(root -> left) - deep(root -> right)) <= 1 &&
isBalanced(root -> left) && isBalanced(root -> right) ;
最后我们该如何学习?
1、看视频进行系统学习
这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。
另外,我自己也珍藏了好几套视频资料躺在网盘里,有需要的我也可以分享给你:
2、读源码,看实战笔记,学习大神思路
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
Spring源码深度解析:
Mybatis 3源码深度解析:
Redis学习笔记:
Spring Boot核心技术-笔记:
3、面试前夕,刷题冲刺
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:
只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。
人生短暂,别稀里糊涂的活一辈子,不要将就。
s://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**