// BFS Level Order Traversal (From Right to Left)
int findBottomLeftValue(TreeNode* root) { // time: O(n); space: O(n)
queue<TreeNode*> q({root});
TreeNode* t = nullptr;
while (!q.empty()) {
for (int i = q.size() - 1; i >= 0; --i) {
t = q.front(); q.pop();
if (t->right) q.push(t->right);
if (t->left) q.push(t->left);
}
}
return t->val;
}