代码随想录 513. 找树左下角的值

58 阅读1分钟

513. 找树左下角的值 - 力扣(LeetCode)

迭代法

迭代法层序遍历,从左到右遍历每一层

我们按层遍历,遍历到最后一行的第一个元素就是最后最左元素:

image.png

我们需要把二叉树所有元素装进队列里,因为队列有先进先出的特性。

然后我们再按层弹出每层元素,把每层元素的第一个元素给一个变量

当遍历到最后一层时,最后一层第一个元素覆盖变量之前的值,成为最后一个值,该值也正好是我们要的答案。

我们平时弹出是这样弹出:

image.png 但是我们现在想要保留每行的第一个元素,所以我们要控制一下行,我们可以用for循环:

image.png

image.png


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;
    }
};

image.png