思路:
- 依然是标准的层次遍历二叉树
- 采用了for循环,
i == 0 的时候,必然就是最左边的数值,而最后一次更新的“最左边的数值”,就是最底层的最左边的数值
代码:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */class Solution {public: int findBottomLeftValue(TreeNode* root) { int bottom_left = 0; queue<TreeNode*> q; q.push(root); while (!q.empty()) { int cur_level_size = q.size(); for (int i = 0; i < cur_level_size; ++i) { TreeNode* node = q.front(); q.pop(); if (i == 0) { bottom_left = node->val; } if (node->left) q.push(node->left); if (node->right) q.push(node->right); } } return bottom_left; }};