输入:一颗二叉树
输出:这颗树的最下面一层最左边的节点值。
分析:
用BFS的思路解决最直观。读每一层,在每一层记录第一个元素的值。在队列中第一层:1;第二层:2,3;第三层 4,5,6。如此继续下去。只要保留下第一个元素的值,即为答案。
分析2:
如果用DFS的思路,先序遍历树:1,2,4,3,5,7,6。遍历过程中带着当前节点的层次,每个层次只记录下遇到的第一个值。
初始化:recordLevel=0,value=0。
处理:对于节点root,层次level,如果level>recordLevellevel>recordLevellevel>recordLevel,则value=root.val,并且更新recordLevel=levelrecordLevel=levelrecordLevel=level。接着遍历左右节点。
代码
感悟:写代码就像写作一样。我们写作之前总是需要多读书,看别人怎么写,学习写作技巧。代码也一样,多看看别人写的代码,才会发现“哇,原来可以这样做啊”。看得多了,自己才可能会写。写作之前需要有独立思考,想明白要写什么,怎么写,有个大致轮廓。那会老师叫打草稿。有时候会写出来,有时候打的是腹稿。写代码也一样,写之前会先想清楚大概要怎么做,这么做是不是正确。