Breadth-first Search -- Leetcode problem513. Find Bottom Left Tree Value

来源:互联网 发布:十大巅峰网络小说知乎 编辑:程序博客网 时间:2024/06/05 19:27
  • 描述: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

  • 分析:这道题是寻找最底左树节点的值,题目本身实现并不困难。
  • 思路一:用BFS算法层层便利去寻找最底左树的值。
class Solution {public:    int findBottomLeftValue(TreeNode* root) {    int val = 0;    queue<TreeNode*> my_queue;    my_queue.push(root);    while (!my_queue.empty()) {        int n = my_queue.size();        for (int i = 0; i < n; i++) {            TreeNode* temp = my_queue.front();            my_queue.pop();            if (i == 0) val = temp -> val;            if (temp -> left) my_queue.push(temp -> left);            if (temp -> right) my_queue.push(temp -> right);        }    }    return val;}};
  • 思路二:用递归的方式实现,这种方法更想树的遍历一点,在遍历一棵数的过程中找到最底左树的值。
class Solution {public:    void findBottomLeftValue(TreeNode* root, int& maxDepth, int& leftVal, int depth) {    if (!root) return;    if (depth > maxDepth) {        maxDepth = depth;        leftVal = root->val;    }    findBottomLeftValue(root->left, maxDepth, leftVal, depth+1);    findBottomLeftValue(root->right, maxDepth, leftVal, depth+1);}int findBottomLeftValue(TreeNode* root) {    if (!root) return 0;    int maxDepth = 0;    int leftVal = root->val;    findBottomLeftValue(root, maxDepth, leftVal, 0);    return leftVal;}};
原创粉丝点击