剑指offer的开头
为什么每次这样开头呀?为什么不用#include<iostream>这相当于在编译器的啥?class Solution {
public: 因为你这只是定义一个Solution类,剑指offer的验证程序才是main函数,它会实例化你定义的Solution类作为问题的解决方案。也就是每个问题的main函数已经写好了,包括测试集的读取,Solution类实例化,测试结果对比,结果输出等等,你只需要提供Solution类的实现就行了 major_lyu 发表于 2020-2-26 19:55
因为你这只是定义一个Solution类,剑指offer的验证程序才是main函数,它会实例化你定义的Solution类作为问 ...
老哥,可以写一下剑指offer的main函数吗 松鼠呀 发表于 2020-2-27 13:16
老哥,可以写一下剑指offer的main函数吗
每个问题的main函数不一样的,所要度读取的测试集是不一样的。 major_lyu 发表于 2020-2-27 15:26
每个问题的main函数不一样的,所要度读取的测试集是不一样的。
大佬,方便的时候可以写下这道题吗? 松鼠呀 发表于 2020-2-27 20:47
大佬,方便的时候可以写下这道题吗?
那道题? major_lyu 发表于 2020-2-27 22:53
那道题?
从上往下打印出二叉树的每个节点,同层节点从左至右打印
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<TreeNode> v_in;
vector<int> v_out;
if (root==NULL)
{
return v_out;
}
v_in.push_back(*root);
while (!v_in.empty())
{
TreeNode t1 = v_in.front();
v_in.erase(v_in.begin());
if (t1.left!=NULL)
{
v_in.push_back(*t1.left);
}
if (t1.right != NULL)
{
v_in.push_back(*t1.right);
}
v_out.push_back(t1.val);
}
return v_out;
}
}; 本帖最后由 major_lyu 于 2020-2-28 15:44 编辑
松鼠呀 发表于 2020-2-28 10:23
从上往下打印出二叉树的每个节点,同层节点从左至右打印
class Solution {
public:
这就是二叉树广度优先遍历啊。
好好看一看二叉树遍历方式和原理。
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<int> v_out; // 存放输出结点值
queue<TreeNode*> que; //存放待输出的结点队列
if (root == NULL)
return v_out;
que.push(root);
while (!que.empty())
{
TreeNode* node = que.front(); //取出队首结点
if(node->left) que.push(node->left);//将左结点入队
if(node->right) que.push(node->right); // 将右结点入队
v_out.push_back(node->val); // 队首结点值放入输出容器
que.pop();//队首结点弹出
}
return v_out;
}
}; major_lyu 发表于 2020-2-28 15:43
这就是二叉树广度优先遍历啊。
好好看一看二叉树遍历方式和原理。
可以加一下库函数吗?#include<iostream> 本帖最后由 major_lyu 于 2020-2-29 19:07 编辑
松鼠呀 发表于 2020-2-29 18:21
可以加一下库函数吗?#include
剑指offer的测试环境中已经帮你加好了。Solution类的实现放在对应的问题给出的输入框不就行了。
没有必要自己写测试文件。你难道是想要在本机进行调试?
我不太喜欢剑指offer,题目描述有的不是很清楚。
你要刷题可以去leetcode.
而且leetcode还可以在visual studio code中使用,不用打开网页就可以刷题
参考这个配置一下就可以了
https://www.jianshu.com/p/19603d27b8c6
页:
[1]