2.4学习总结

ops/2025/2/6 7:05:37/

洛谷1305代码

#include<stdio.h>
#include<stdlib.h>
struct treenode {char val;struct treenode* left;struct treenode* right;
};
struct treenode* createnode(char val) {struct treenode* node = (struct treenode*)malloc(sizeof(struct treenode));node->val = val;node->left = NULL;node->right = NULL;return node;
}
struct treenode* buildtree(int n, char nodes[][4]) {struct treenode* root = NULL;struct treenode* nodesarray[26] = { NULL };for (int i = 0;i < n;i++) {char val = nodes[i][0];char left = nodes[i][1];char right = nodes[i][2];if (nodesarray[val - 'a'] == NULL) {nodesarray[val - 'a'] = createnode(val);}if (left != '*') {if (nodesarray[left - 'a'] == NULL) {nodesarray[left - 'a'] = createnode(left);}nodesarray[val - 'a']->right = nodesarray[right - 'a'];}if (i == 0) {root = nodesarray[val - 'a'];}}return root;
}
void preorderTraversal(struct treenode* root) {if (root == NULL) {return;}printf("%c", root->val);preorderTraversal(root->left);preorderTraversal(root->right);
}
int main() {int n;scanf("%d", & n);char nodes[n][4];for (int i = 0;i < n;i++) {scanf("%s", nodes[i]);}struct treenode* root = buildtree(n, nodes);preorderTraversal(root);printf("\n");return 0;
}

前序遍历方法(dfs)二叉树

struct MyStruct
{char l, r;
}tree[200];
void dfs(char pos)
{cout << pos;if (tree[pos].l != '*') dfs(tree[pos].l);if (tree[pos].r != '*') dfs(tree[pos].r);
}

前序遍历

void preorderTraversal(struct treenode* root) {if (root == NULL) {return;}printf("%c", root->val);preorderTraversal(root->left);preorderTraversal(root->right);
}

洛谷1160代码

#include <stdio.h>
#include <stdlib.h>
typedef struct Node {int id;struct Node* prev;struct Node* next;
} Node;
Node* createNode(int id) {Node* newNode = (Node*)malloc(sizeof(Node));newNode->id = id;newNode->prev = NULL;newNode->next = NULL;return newNode;
}
//左插
void insertLeft(Node* target, Node* newNode) {newNode->next = target;newNode->prev = target->prev;if (target->prev != NULL) {target->prev->next = newNode;}target->prev = newNode;
}
//右插
void insertRight(Node* target, Node* newNode) {newNode->prev = target;newNode->next = target->next;if (target->next != NULL) {target->next->prev = newNode;}target->next = newNode;
}
//去掉
void removeNode(Node* node) {if (node->prev != NULL) {node->prev->next = node->next;}if (node->next != NULL) {node->next->prev = node->prev;}free(node);
}
int main() {int N, M;scanf("%d", &N);Node* head = createNode(1);Node* nodes[N+1];nodes[1] = head;for (int i = 2; i <= N; i++) {int k, p;scanf("%d %d", &k, &p);Node* newNode = createNode(i);nodes[i] = newNode;if (p == 0) {insertLeft(nodes[k], newNode);} else {insertRight(nodes[k], newNode);}}scanf("%d", &M);for (int i = 0; i < M; i++) {int x;scanf("%d", &x);if (nodes[x] != NULL) {removeNode(nodes[x]);nodes[x] = NULL;}}Node* current = head;while (current->prev != NULL) {current = current->prev;}while (current != NULL) {printf("%d ", current->id);current = current->next;}return 0;
}

 

 


http://www.ppmy.cn/ops/156084.html

相关文章

Android 常用命令和工具解析之Battery Historian

Batterystats是包含在 Android 框架中的一种工具&#xff0c;用于收集设备上的电池数据。您可以使用adb bugreport命令抓取日志&#xff0c;将收集的电池数据转储到开发机器&#xff0c;并生成可使用 Battery Historian 分析的报告。Battery Historian 会将报告从 Batterystats…

WebSocket——环境搭建与多环境配置

一、前言&#xff1a;为什么要使用多环境配置&#xff1f; 在开发过程中&#xff0c;我们通常会遇到多个不同的环境&#xff0c;比如开发环境&#xff08;Dev&#xff09;、测试环境&#xff08;Test&#xff09;、生产环境&#xff08;Prod&#xff09;等。每个环境的配置和需…

探索 Copilot:开启智能助手新时代

探索 Copilot&#xff1a;开启智能助手新时代 在当今数字化飞速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度改变着我们的工作和生活方式。而 Copilot 作为一款强大的 AI 助手&#xff0c;凭借其多样的功能和高效的应用&#xff0c;正在成为众…

HTML 字符实体

HTML 字符实体 在HTML中,字符实体是一种特殊的表示方式,用于在文档中插入那些无法直接通过键盘输入的字符。字符实体在网页设计和文档编写中扮演着重要的角色,尤其是在处理特殊字符、符号和数学公式时。以下是关于HTML字符实体的详细解析。 字符实体概述 HTML字符实体是一…

GGML、GGUF、GPTQ 都是啥?

GGML、GGUF和GPTQ是三种与大型语言模型(LLM)量化和优化相关的技术和格式。它们各自有不同的特点和应用场景,下面将详细解释: 1. GGML(GPT-Generated Model Language) 定义:GGML是一种专为机器学习设计的张量库,由Georgi Gerganov创建。它最初的目标是通过单一文件格式…

vue2-key的原理与作用

vue2-key的原理与作用 1. 啥是key VUE中&#xff0c;key是给vnode一个唯一的ID&#xff0c;也是diff的一种优化策略&#xff0c;可以根据key&#xff0c;更准确&#xff0c;更快的找到对应的vnode节点我们在使用v-for时&#xff0c;需要给每个元素加上一个唯一的ID使用new Da…

计算机网络之数据链路层(数据链路层的功能)

帧同步&#xff1a; 数据链路层将网络层传下来的数据报封装成帧&#xff0c;为了区分不同的帧&#xff0c;需要在每个帧的开头和结尾添加特殊的标记&#xff0c;以实现帧的定界和同步。这样&#xff0c;接收方就能准确地识别出一个帧的开始和结束。 差错控制&#xff1a; 在…

Kafka SASL/SCRAM介绍

文章目录 Kafka SASL/SCRAM介绍1. SASL/SCRAM 认证机制2. SASL/SCRAM 认证工作原理2.1 SCRAM 认证原理2.1.1 密码存储和加盐2.1.2 SCRAM 认证流程 2.2 SCRAM 认证的关键算法2.3 SCRAM 密码存储2.4 SCRAM 密码管理 3. 配置和使用 Kafka SASL/SCRAM3.1 Kafka 服务器端配置3.2 创建…