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.
简单的bfs逐层遍历树,关键问题是想清楚什么时候更新result可以存储到每层最左边的值,想清楚queue是一层一层按从左到右的顺序压入队列的,所以每次循环时队列最上方的val就是最左的值。
/**
* 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) {
//if (root == NULL) return -1;
queue<TreeNode*> q;
int result = root->val;
q.push(root);
while (!q.empty()) {
int size = q.size();
result = q.front()->val;
for (int i = 0; i < size; i++) {
TreeNode* node = q.front();
q.pop();
if (node->left!=NULL) q.push(node->left);
if (node->right != NULL) q. push(node->right);
}
}
return result;
}
};