原因:
因为平常在leetcode刷题时候没有办法用debug,所以我都是在VS上做完搬运的.但是有些题需要前置条件,比如链表或者二叉树,都需要自己创建.这里我分享我自己用的模板,只需要改数组中的数据即可完成创建.
链表模板
#include<iostream>
#include<vector>
using namespace std;
struct ListNode
{
int val;
ListNode *next;
ListNode() :val(0), next(nullptr){}
ListNode(int v):val(v),next(nullptr){}
ListNode(int v,ListNode *n):val(v),next(n){}
};
int main()
{
vector<int>n{ ... };
ListNode *head = new ListNode(n[0]);
ListNode *p = head;
for (int i = 1; i < n.size(); i++)
{
ListNode *s = new ListNode(n[i]);
p->next = s;
p = p->next;
}
return 0;
}
二叉树
#include<iostream>
#include<vector>
using namespace std;
struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(nullptr), right(nullptr) {}
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};
TreeNode* CreatBiTree(vector<int>n,int index)
{
if (index > n.size() - 1 || n[index] == '#' ) {
return nullptr;
}
TreeNode *root = new TreeNode(n[index]);
root->left = CreatBiTree(n, index * 2 + 1);
root->right = CreatBiTree(n, index * 2 + 2);
return root;
}
int main()
{
vector<int>n{ ... };
TreeNode * root = CreatBiTree(n, 0);
return 0;
}
自己用,要是有错误希望说一下.后序如果有会一直更新