这道题的意思是,假如你站在一个二叉树的右侧,能够看到二叉树的值是什么,写了一个很挫的解法,都不能说是算法的东西,希望能够继续改进:
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);
}
};
上面是最快想到的解法,还在继续改进中。上面的解法,我主要是通过读取了树的每一层,然后能够看到的就是在树的右侧的值。