1. Description
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.
2. code(待优化)
/**
* 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->left == NULL && root->right == NULL)
return root->val;
TreeNode* node = NULL;
//TreNode * left = NULL, *right = NULL;
vector<vector<int>> res;
queue<TreeNode*> tmp;
int level = 0;
tmp.push(root);
vector<int> t_vec;
t_vec.push_back(root->val);
res.push_back(t_vec);
while(!tmp.empty()) {
t_vec.clear();
level++;
for(int i = 0, n = tmp.size(); i < n; i++) {
node = tmp.front();
tmp.pop();
if(node->left != NULL) {
t_vec.push_back(node->left->val);
tmp.push(node->left);
}
if(node->right != NULL) {
t_vec.push_back(node->right->val);
tmp.push(node->right);
}
}
if(t_vec.size())
res.push_back(t_vec);
}
return res[--level][0];
}
};