513. 找树左下角的值
层次遍历即可
/**
* 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) {
/// 初始化结果pair
pair<TreeNode*, int> ret = {NULL, -1};
/// 队列用于层次遍历
queue<pair<TreeNode*, int>> q;
/// 首先将根节点入队
q.push({root, 1});
/// 当根节点不空时
while(!q.empty())
{
/// 取出根节点
pair<TreeNode*, int> u = q.front();
/// 将队首元素出队
q.pop();
/// 如果当前元素的层级 大于 结果元素的层级
/// 那么将结果替换为当前元素
/// 且由于这里是大于,所以同一层级只会更新一次
if (u.second > ret.second)
ret = u;
/// 如果当前节点的左子树不为空,入队
if (u.first->left)
q.push({u.first->left, u.second + 1});
/// 如果当前节点的右子树不为空,入队
if (u.first->right)
q.push({u.first->right, u.second + 1});
}
return ret.first->val;
}
};