给定一个二叉树的 根节点 root
,请找出该二叉树的 最底层 最左边 节点的值。
假设二叉树中至少有一个节点。
由于是需要最底层最左边的节点,此时递归遍历会比较麻烦,前序和后序都只能走向最左下角的节点,而不一定是最底层的最左边。
故本文使用层序遍历实现,使用一个容器接收每一层的第一个值,则最底层最左边的值就是容器的最后一个元素。
代码如下:
class Solution {
public:
vector bfs(TreeNode* root){
queue<TreeNode*> que;
vector vec;
if (root) que.push(root);
while(!que.empty()){
int size = que.size();
for(int i=0; i<size; i++){ TreeNode* node = que.front(); que.pop(); if (i==0) vec.push_back(node->val);
if (node->left) que.push(node->left);
if (node->right) que.push(node->right);
}
}
return vec;
}
int findBottomLeftValue(TreeNode* root) {
vector result;
result = bfs(root);
return result[result.size()-1];
}
};