PTA-DSA
PTA-Data Structures and Algorithms (English)刷题笔记
东篱下の悠然
有一分热,发一分光,就令萤火一般,也可以在黑暗里发光,不必等候炬火~
展开
-
7-6 Root of AVL Tree (25 分)*
输入一串数字构建二叉平衡树,套用建树的固定模板 思路,每次插入一个数字就检查一下二叉树是否平衡,决定是否左旋右旋 插入节点模板: void insert(node * &root, int v) { if (root == NULL) { root = newnode(v); return; } if (v < root->v) { insert(root->lchild, v); updatahegiht(root); if (getbalancefac原创 2021-02-19 22:12:12 · 125 阅读 · 0 评论 -
7-5 Tree Traversals Again (25 分)*
inorder 无序 implemented 实施 recursive 递归 unique 唯一的确定的 generated 产生 sequence 序列 operations 运行 实施 postorder traversal sequence 后序遍历序列 题意:给出中序遍历,得到后序遍历结果 观察Push的顺序为先序遍历,Pop的顺序为中序遍历,先根据其顺序建立数组先序遍历数组pre[]和中序遍历数组in[] vector<int> pre, in, post; void postor原创 2021-02-19 21:14:40 · 115 阅读 · 0 评论 -
7-3 树的同构 (25分)
#define null -1 struct node { int left, right; char data; } tree1[100], tree2[100]; int book[1000]; int build(struct node tree[]) { int n, i, root; memset(book, 0, sizeof(book)); //节点初始化 char left, right; scanf("%d", &n);原创 2021-02-02 16:39:55 · 110 阅读 · 0 评论 -
7-2 一元多项式的乘法与加法运算 (20分)
int a[1005], b[1005], c[2005], d[1005]; int main() { //输入第一个多项式 int n1; cin >> n1; for(int i = 0; i < n1; i ++) { int x, y; cin >> x >> y; a[y] = x; } //输入第二个多项式 int n2; cin >> n2; for(int i = 0; i < n2; i ++)原创 2021-02-02 13:05:53 · 98 阅读 · 0 评论 -
7-4 List Leaves (25分)**
corresponds 相当于 adjacent 相邻的 贴三份答案: #include <bits/stdc++.h> using namespace std; const int N = 1e3 + 7, M = 5e4 + 7; vector<int> T[11]; void dfs(int u) { queue<int> q; q.push(u); bool f = 0; while(q.size() != 0) {原创 2021-02-01 21:59:04 · 83 阅读 · 0 评论 -
7-3 Pop Sequence (25分)*
obtain 获得 capacity 容纳能力 int a[1005]; int main() { int m, n, k; cin >> m >> n >> k; while(k --) { for(int i = 0; i < n; i ++) cin >> a[i]; int index = 1; bool f = 0; stack<int> s; for(int i = 0; i < n;原创 2021-01-31 15:15:22 · 101 阅读 · 0 评论 -
7-2 Reversing Linked List (25分)*
把链表按地址排序,再反转k个节点 const int N = 100005; struct st { int add, data, next; }a[N], *b[N]; int main() { int head, n, k; cin >> head >> n >> k; for(int i = 0; i < n; i ++) { int address, data, next; cin >> address >> da原创 2021-01-31 13:11:42 · 177 阅读 · 0 评论 -
7-1 Maximum Subsequence Sum (25分)*
int a[10005]; int main() { INIT int n; cin >> n; for(int i = 0; i < n; i ++) { cin >> a[i]; } int s = 0, start = 0, end = n - 1, ans = -1; for(int i = 0; i < n; i ++) { s += a[i]; if(s < 0) { s = 0; continue; }原创 2021-01-29 19:36:29 · 84 阅读 · 0 评论