OJ 199 Binary Tree Side View

来源:互联网 发布:程序员转行做销售 编辑:程序博客网 时间:2024/06/01 09:36

这道题的意思是,假如你站在一个二叉树的右侧,能够看到二叉树的值是什么,写了一个很挫的解法,都不能说是算法的东西,希望能够继续改进:

struct TreeNode{    int val;    TreeNode *left;    TreeNode *right;    TreeNode(int x) : val(x), left(NULL), right(NULL)   {}};class Solution {public:    vector<int> rightSideView(TreeNode *root) {        vector<int> ret;        vector<vector<int>> data;        if (root == NULL)        {            return ret;        }        readTree(0, data, root);        int len = data.size();        for (int i = 0; i < len; i++)        {            ret.push_back(data[i].back());        }        return ret;    }private:    void readTree(int level, vector<vector<int>> &data, TreeNode *root)    {        if (root == NULL)        {            return;        }        if (data.size() <= level)        {            data.push_back(vector < int > {root->val});        }        else        {            data[level].push_back(root->val);        }        readTree(level + 1, data, root->left);        readTree(level + 1, data, root->right);    }};

上面是最快想到的解法,还在继续改进中。上面的解法,我主要是通过读取了树的每一层,然后能够看到的就是在树的右侧的值。

0 0
原创粉丝点击