当前位置:   article > 正文

力扣刷题 DAY_45 二叉树_给定—棵二叉树,找到这棵树最中最后—行中最左边的值。

给定—棵二叉树,找到这棵树最中最后—行中最左边的值。

Leetcode513

链接:力扣 。

题目: 

给定一个二叉树,在树的最后一行找到最左边的值。

示例1:

  

输入:root = [2,1,3]
输出:1

示例2: 

 

输入:root = [1,2,3,4,null,5,6,null,null,7]
输出:7

思路:

依然按照遍历的思路来做。很显然,本题要用层序遍历的思路,我们只需在层序遍历的代码上稍作修改。

在层序遍历中,我们用for循环逐层遍历,即每一次for循环遍历了一层。因此,我们只需在每一层遍历时将该层第一个结点(即该层最左结点)的值记录下来,每遍历一层我们如此做更新该值一次。最后得到的值就是最下层的最左结点值。

参考代码: 

  1. /**
  2. * Definition for a binary tree node.
  3. * struct TreeNode {
  4. * int val;
  5. * TreeNode *left;
  6. * TreeNode *right;
  7. * TreeNode() : val(0), left(nullptr), right(nullptr) {}
  8. * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
  9. * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
  10. * };
  11. */
  12. class Solution {
  13. public:
  14. int findBottomLeftValue(TreeNode* root) {
  15. queue<TreeNode*> q;
  16. int leftValue = 0;
  17. if (root) {
  18. q.push(root);
  19. }
  20. while (!q.empty()) {
  21. int len = q.size();
  22. for (int i = 0; i < len; i++) {
  23. TreeNode *node = q.front();
  24. q.pop();
  25. if (node->left) {
  26. q.push(node->left);
  27. }
  28. if (node->right) {
  29. q.push(node->right);
  30. }
  31. if (i == 0) {
  32. leftValue = node->val;
  33. }
  34. }
  35. }
  36. return leftValue;
  37. }
  38. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/943366
推荐阅读
相关标签
  

闽ICP备14008679号