/**
* 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) {
queue<TreeNode *> que;
que.push(root);
TreeNode *leftNode = NULL;
int horizinal = 1;
int tmpHorizinal = 0;
int sum = 0;
while(!que.empty()) {
TreeNode *node = que.front();
sum++;
que.pop();
if (sum == 1) {
leftNode = node;
}
if(node->left) {
que.push(node->left);
tmpHorizinal++;
}
if(node->right) {
que.push(node->right);
tmpHorizinal++;
}
if (sum == horizinal) {
horizinal = tmpHorizinal;
tmpHorizinal = 0;
sum = 0;
}
}
return leftNode->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) {
queue<TreeNode *> que;
que.push(root);
TreeNode *leftNode = NULL;
int horizinal = 1;
int tmpHorizinal = 0;
int sum = 0;
while(!que.empty()) {
TreeNode *node = que.front();
sum++;
que.pop();
if (sum == 1) {
leftNode = node;
}
if(node->left) {
que.push(node->left);
tmpHorizinal++;
}
if(node->right) {
que.push(node->right);
tmpHorizinal++;
}
if (sum == horizinal) {
horizinal = tmpHorizinal;
tmpHorizinal = 0;
sum = 0;
}
}
return leftNode->val;
}
};