思路:
首先用队列将节点入队,每次出队时,先将该节点压入栈中,然后右孩子和左孩子一次入队,重复这个此操作直到队列为空,栈中元素最终按照层序从右到左逐层排列,所以最后一行最左边的值始终在栈的顶部。
/**
* 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) {
stack<int> s;
queue<TreeNode*> q;
q.push(root);
while (!q.empty())
{
TreeNode* p = q.front();
s.push(p->val);
q.pop();
if (p->right) q.push(p->right);
if (p->left) q.push(p->left);
}
return s.top();
}
};