0
点赞
收藏
分享

微信扫一扫

【LeetCode】ACM完整代码写数据结构(以树、链表为例)c++

佛贝鲁先生 2022-05-03 阅读 123

博主现在从PTA过渡到了力扣进行刷题,近期在实习面试过程中也发现需要现场写完整代码(也就是ACM代码),从力扣注重函数实现的格式中还有点难切换出来,但是在搜索过程中这种完整代码的博客内容好少啊。于是也动手写了完整的代码和大家一起分享。重点在于树和链表,此篇以力扣上的题为例进行展示。由于这里仅是对完整代码进行展示,因而不对解题内容作解析。

    1. 反转链表 / 剑指 Offer 24. 反转链表
#include <iostream>
#include <vector>

using namespace std;


struct ListNode{
    int val;
    ListNode* next;
    ListNode(int x):val(x),next(NULL){}
};

ListNode* create(vector<int> arr){
    int i;
    ListNode *p,*head,*pre;
    head = new ListNode(0);  //给一个初始值0
    pre = head;
    for(i = 0;i< arr.size();i++){
        p = new ListNode(arr[i]);
        pre->next = p;
        pre = p;
    }
    return head;
}

int main()
{
    int arr[] = {5,4,3,2,1,0};
    vector<int> v(arr,arr+sizeof(arr)/sizeof(int)); //把int型数组转化为vector,注意这里的转化方式
    ListNode* L  = create(v);
    L = L->next;  //要有这步,否则要在create函数中返回head->next即L指向头结点
    while(L!=NULL){
        cout<< L->val;
        L = L->next;
    }
    return 0;
}
    1. 二叉树的最大深度
#include <iostream>
#include <vector>
#include <queue>

using namespace std;


struct TreeNode{
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(int x):val(x),left(NULL),right(NULL){};
};

int getDepth(TreeNode* root){
        if(root == NULL)  return 0;  //注意终止条件
        int leftDepth = getDepth(root->left);
        int rightDepth = getDepth(root->right);
        int len = 1 + max(leftDepth, rightDepth);
        return len;

    }

TreeNode* createTree(vector<int> v){
	TreeNode **nodes = new TreeNode*[v.size()]; //这步查了很多方法才解决的
	//将int数据转换为TreeNode节点
	for (int i = 0; i < v.size(); i++)
	{
		nodes[i] = new TreeNode(v[i]);
	}
	queue<TreeNode*> nodeQueue;
	nodeQueue.push(nodes[0]);

	TreeNode *node;

大家一起加油吧~坚持刷题,总会有收获的!真的是熟能生巧,但是对于新的题也要逐步尝试用自己的思维敢于突破解题呀!所以也要锻炼自己举一反三的能力呢!

举报

相关推荐

0 条评论