Given a binary tree, find the leftmost value in the last row of the tree.
Example 1:
Input: 2 / \ 1 3 Output: 1
Example 2:
Input: 1 / \ 2 3 / / \ 4 5 6 / 7 Output: 7
Note: You may assume the tree (i.e., the given root node) is not NULL.
题目:给发ing一颗二叉树,返回最后一行最左边的节点的值
思路:我是按照二叉树的层次遍历来做的,启示也就是二叉树的广度优先遍历,在二叉树的层次遍历这道题的答案上,直接返回*res.rbegin()[0]就完全可以了。但我还是重新写了,没有引入二维vector。而是使用一个vector<int> ret来记录每一层的节点,从左到右依次push_back,如果还有下一层则将ret清空即可,最后返回ret[0]。
代码:
class Solution {
public:
int findBottomLeftValue(TreeNode* root) {
vector<int> ret; //ret记录每一层的节点
queue<TreeNode*> q;
q.push(root);
while(!q.empty()){
int size = q.size();
ret.clear();//ret先清空,push_back一层中的每一个节点
for(;size>0;size--){
TreeNode* node = q.front();
ret.push_back(node->val);
q.pop();
if(node->left)
q.push(node->left);
if(node->right)
q.push(node->right);
}
}
return ret[0];
}
};
AC beats 98%