513. 找树左下角的值
给定一个二叉树,在树的最后一行找到最左边的值。
示例 1:
输入: 2 / \ 1 3 输出: 1
示例 2:
输入: 1 / \ 2 3 / / \ 4 5 6 / 7 输出: 7
class Solution {
public:
int findBottomLeftValue(TreeNode* root) {
vector<TreeNode>queue;
struct TreeNode* p;
int ans = root->val;
p = root;
if(root != NULL){
queue.push_back(*root);
}
while(queue.size() != 0){
int flag = 0;
int temp = queue.size();
while(temp--){
if(queue[0].left != NULL){
queue.push_back(*queue[0].left);
if(flag == 0){
flag = 1;
ans = queue[0].left->val;
}
}
if(queue[0].right != NULL){
queue.push_back(*queue[0].right);
if(flag == 0){
flag = 1;
ans = queue[0].right->val;
}
}
queue.erase(queue.begin());
}
}
return ans;
}
};
这题可以合理运用C++里面的vector,将vector当作一个存结构体TreeNode的队列来使用,运用erase()和push_back()方法来进行添加和删除,然后在每个循环里面先进行存储vector.size()不然在进行删除之后那个vector的size()会随时更改,在每一个循环里面的第一次非空儿子节点进行保存该节点的值。主要思路:层次遍历,队列