松鼠呀 发表于 2020-2-25 22:10:09

剑指offer的开头

为什么每次这样开头呀?为什么不用#include<iostream>这相当于在编译器的啥?
class Solution {
public:

major_lyu 发表于 2020-2-26 19:55:12

因为你这只是定义一个Solution类,剑指offer的验证程序才是main函数,它会实例化你定义的Solution类作为问题的解决方案。也就是每个问题的main函数已经写好了,包括测试集的读取,Solution类实例化,测试结果对比,结果输出等等,你只需要提供Solution类的实现就行了

松鼠呀 发表于 2020-2-27 13:16:56

major_lyu 发表于 2020-2-26 19:55
因为你这只是定义一个Solution类,剑指offer的验证程序才是main函数,它会实例化你定义的Solution类作为问 ...

老哥,可以写一下剑指offer的main函数吗

major_lyu 发表于 2020-2-27 15:26:07

松鼠呀 发表于 2020-2-27 13:16
老哥,可以写一下剑指offer的main函数吗

每个问题的main函数不一样的,所要度读取的测试集是不一样的。

松鼠呀 发表于 2020-2-27 20:47:38

major_lyu 发表于 2020-2-27 15:26
每个问题的main函数不一样的,所要度读取的测试集是不一样的。

大佬,方便的时候可以写下这道题吗?

major_lyu 发表于 2020-2-27 22:53:00

松鼠呀 发表于 2020-2-27 20:47
大佬,方便的时候可以写下这道题吗?

那道题?

松鼠呀 发表于 2020-2-28 10:23: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:43:33

本帖最后由 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;
    }
};

松鼠呀 发表于 2020-2-29 18:21:29

major_lyu 发表于 2020-2-28 15:43
这就是二叉树广度优先遍历啊。
好好看一看二叉树遍历方式和原理。

可以加一下库函数吗?#include<iostream>

major_lyu 发表于 2020-2-29 19:04:46

本帖最后由 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]
查看完整版本: 剑指offer的开头