513. Find Bottom Left Tree Value

来源:互联网 发布:远程教学软件zoom 编辑:程序博客网 时间:2024/06/05 18:39

Given a binary tree, find the leftmost value in the last row of the tree.
Example 1:
Input:

2
/ \
1 3
Output:
1
Example 2:
Input:
1
/ \
2 3
/ / \
4 5 6
/
7
Output:
7
Note: You may assume the tree (i.e., the given root node) is not NULL.

又来了一道二叉树的层序遍历的题目

/** * 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) {      if (root == NULL)        return 0;      queue<struct TreeNode*> que1;      queue<struct TreeNode*> que2;      struct TreeNode* temp;      int left = 0;      left = root -> val;      if (root -> left != NULL)        que1.push(root -> left);      if (root -> right != NULL)        que1.push(root ->right);      while (!que1.empty() || !que2.empty()) {        if (!que1.empty()) {          left = que1.front() -> val;          while (!que1.empty()) {            temp = que1.front();            if (temp -> left != NULL)              que2.push(temp -> left);            if (temp -> right != NULL)              que2.push(temp -> right);            que1.pop();          }        } else if (!que2.empty()) {          left = que2.front() -> val;          while (!que2.empty()) {            temp = que2.front();            if (temp -> left != NULL)              que1.push(temp -> left);            if (temp -> right != NULL)              que1.push(temp -> right);            que2.pop();          }        }      }      return left;    }};