找树左下角的值

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

假设二叉树中至少有一个节点。

由于是需要最底层最左边的节点,此时递归遍历会比较麻烦,前序和后序都只能走向最左下角的节点,而不一定是最底层的最左边。

故本文使用层序遍历实现,使用一个容器接收每一层的第一个值,则最底层最左边的值就是容器的最后一个元素。

代码如下:

class Solution {
public:
    vector bfs(TreeNode* root){
        queue<TreeNode*> que;
        vector vec;
        if (root) que.push(root);
        while(!que.empty()){
            int size = que.size();
            for(int i=0; i<size; i++){ TreeNode* node = que.front(); que.pop(); if (i==0) vec.push_back(node->val);
                if (node->left) que.push(node->left);
                if (node->right) que.push(node->right);
            }
        }
        return vec;
    }

    int findBottomLeftValue(TreeNode* root) {
        vector result;
        result = bfs(root);
        return result[result.size()-1];
    }
};