给定一个二叉树,在树的最后一行找到最左边的值。
示例 1:
输入: 2 / \ 1 3 输出: 1
示例 2:
输入: 1 / \ 2 3 / / \ 4 5 6 / 7 输出: 7 注意: 您可以假设树(即给定的根节点)不为 NULL。
思路:像层次遍历https://blog.csdn.net/weixin_40673608/article/details/86533533一样,稍微变化一下,每次取每一层的第一个元素保存下来,这样,取的最后一层的第一个元素就是要找的值
效率:96.80%
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int findBottomLeftValue(TreeNode* root) {
queue<TreeNode*> q1,q2;
q1.push(root);
int ret;
while(1){
ret = q1.front() -> val;
while(!q1.empty()){
TreeNode *temp_Node = q1.front();
q1.pop();
if(temp_Node != NULL){
if(temp_Node -> left != NULL)
q2.push(temp_Node -> left);
if(temp_Node -> right != NULL)
q2.push(temp_Node -> right);
}
}
if(!q2.empty()){
queue<TreeNode*> t = q1;
q1 = q2;
q2 = t;
}
else{
return ret;
}
}
}
};