Find Largest Value in Each Tree Row宽度优先遍历算法详解

来源:互联网 发布:linux 如何进入grub 编辑:程序博客网 时间:2024/06/05 03:41

问题详见:Find Largest Value in Each Tree Row

      You need to find the largest value in each row of a binary tree.

Example:

Input:           1         / \        3   2       / \   \        5   3   9 Output: [1, 3, 9]

解题思路:

      由题目可知该问题也是同样应用BFS算法搜索每一层以得到每一层的最大值,其算法复杂度为O(n)。下面是算法的C++代码和提交结果图。

BFS:

/** * 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:    vector<int> solution;    void helper(TreeNode* node, int cl) {        if (node == NULL) {            return;        }        if (solution.size() < cl + 1) {            solution.push_back(node->val);        } else {            if (solution[cl] < node->val) {                solution[cl] = node->val;            }        }        helper(node->left, cl+1);        helper(node->right, cl+1);    }    vector<int> largestValues(TreeNode* root) {        if(root == NULL) {            return solution;        }        helper(root, 0);        return solution;    }};

提交运行结果:
BFS

0 0
原创粉丝点击