说起加薪这事,我相信很多程序员都能感同身受。
最近看到一个关于吉利员工的爆料,感觉简直就是我当年心酸经历的翻版。话说这位小伙伴在吉利工作了三年,入职时工资是8000,离职时涨到了11000。乍一看,好像有涨,但三年才涨了3000,别说跟自己辛勤工作的努力不符,甚至比起现在的生活成本,这点涨幅根本不值一提。🤦♂️
我想,这大概也是很多人的真实写照。刚进公司时,我也以为自己做得好,绩效棒,公司总会有相应的回报。可结果呢?几年过去了,工资涨了零头,职位依然在原地踏步。你让老板提起加薪,那反应可不比蜗牛跑得快多少。🚶♂️
而且,公司内部调薪也像是个固定程序,涨幅少得可怜,什么时候调薪,调多少,简直是个谜。每年到了那个“调薪”季节,我都觉得自己像在排队等限量版商品,根本没啥希望。
所以呢,我的建议是:当发现自己在公司中发展瓶颈的时候,不要再硬撑。要知道,工资不涨,自己的人生可不能停滞!敢于跳槽,才能真正感受到工资和待遇的提升。
算法题:二叉树的层序遍历
聊一个经典的算法题:二叉树的层序遍历。大家可能会觉得,嗯,这个问题不难呀,树的遍历方式有很多种,不就是一层一层地遍历吗?对,是的,但也正因为这道题看起来简单,其实很多细节和面试中的考察点都很容易被忽略。
首先,二叉树的层序遍历是指按照树的层级顺序,从上到下,从左到右地访问树的每个节点。换句话说,就是从根节点开始,先遍历第一层,然后是第二层,以此类推,直到所有节点都被访问过。
这个问题很容易用队列来解决。为什么用队列呢?因为队列是“先进先出”的数据结构,这正好和层序遍历的顺序非常吻合——先访问根节点,再访问根节点的左右孩子,然后是下一层的节点,依此类推。
在代码实现上,关键点就是使用队列来辅助我们按层次遍历树的每一层。想象一下,根节点入队,然后从队列中取出一个节点,访问它,再把它的左右孩子依次入队。如此反复,直到队列为空。
下面我给大家写个简单的 Java 示例:
import java.util.*;
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
public class BinaryTreeLevelOrderTraversal {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> result = new ArrayList<>();
if (root == null) {
return result; // 如果根节点为空,直接返回空的结果
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root); // 根节点入队
while (!queue.isEmpty()) {
int levelSize = queue.size(); // 获取当前层的节点个数
List<Integer> currentLevel = new ArrayList<>();
for (int i = 0; i < levelSize; i++) {
TreeNode currentNode = queue.poll(); // 取出当前队列的节点
currentLevel.add(currentNode.val); // 访问该节点
if (currentNode.left != null) {
queue.offer(currentNode.left); // 左孩子入队
}
if (currentNode.right != null) {
queue.offer(currentNode.right); // 右孩子入队
}
}
result.add(currentLevel); // 将当前层的节点值加入结果
}
return result;
}
}
这个代码实现的思路就是:使用一个队列来存储每一层的节点,每次取出队列中的节点并访问,同时将它的左右孩子加入队列。这样我们就能层层遍历整棵树了。
但这里有一个小技巧,在每一层的遍历中,我们通过 levelSize = queue.size()
来确定当前层的节点个数。这样能保证我们每次都只遍历当前层的节点,而不会越过到下一层。别小看这一步,很多初学者可能会在这里犯错,把下一层的节点也提前加进去,结果就乱套了。
另外,大家如果对树的遍历还不太熟悉,可以先从二叉树的其他遍历方法入手,比如先序遍历、中序遍历、后序遍历等。这些遍历方法都会有一些共同的特点,掌握了这些方法后,你会发现层序遍历其实就像是“做菜”时的分步操作,前面完成一步,后面才能顺利进行。
好啦,这就是我对二叉树层序遍历的一些看法。如果你遇到类似的问题,记得多思考一步,理解算法的核心思想,技术面试也好,平时的工作开发也罢,都是一样的道理。
-END-
以上,就是今天的分享了,看完文章记得右下角给何老师点赞,也欢迎在评论区写下你的留言。