迭代法
迭代法层序遍历,从左到右遍历每一层
我们按层遍历,遍历到最后一行的第一个元素就是最后最左元素:
我们需要把二叉树所有元素装进队列里,因为队列有先进先出的特性。
然后我们再按层弹出每层元素,把每层元素的第一个元素给一个变量
当遍历到最后一层时,最后一层第一个元素覆盖变量之前的值,成为最后一个值,该值也正好是我们要的答案。
我们平时弹出是这样弹出:
但是我们现在想要保留每行的第一个元素,所以我们要控制一下行,我们可以用for循环:
class Solution {
public:
int findBottomLeftValue(TreeNode* root) {
//层序遍历
int result=0;//用来统计最最左边的值
queue<TreeNode*> q;
if(root!=nullptr)q.push(root);
//然后把每层弹出,直到最后一层
while(!q.empty())
{
int size=q.size();
for(int i=0;i<size;i++)
{
TreeNode* node=q.front();
q.pop();
if(i==0)result=node->val;//保留最后一行第一个元素
//递归遍历当前节点的左右子树
if(node->left)q.push(node->left);
if(node->right)q.push(node->right);
}
}
return result;
}
};