513. Find Bottom Left Tree Value 原题链接
关键词: 广度优先搜索(BFS)
简单回忆一下BFS:BFS在遍历图时首先从源节点出发遍历其子节点,并将其放入队列中,继续依次对这些子节点进行上述操作。
这道题属于找对路子很方便,没找对就很沙雕 = =。
一开始我打算老老实实从左遍历的,但当我自己模拟一遍的时候我傻了,玛哎我还要记录每个值来自左右以及其高度伐?(当然这个来自左右是我一开始对这个题意的误解,题目只说了要给出最左的数值即可,我一开始看成了最底层左叶子的值了,这个怪我)
So, 左边不爽来右边嘛,搞出来的代码如下,这个对树的层遍历即一个简单的BFS。
/**
* 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 findBottomLeftValue(TreeNode* root) {
queue<TreeNode*> que;
que.push(root);
TreeNode* ptr = nullptr;
while(!que.empty()){
ptr = que.front();
if(ptr->right)
que.push(ptr->right);
if(ptr->left)
que.push(ptr->left);
que.pop();
}
return ptr->val;
}
};