【大学院-筆記試験練習:线性代数和数据结构(16)】

大学院-筆記試験練習:线性代数和数据结构(16)

1-前言

为了升到自己目标的大学院,所作的努力和学习,这里是线性代数和数据结构部分。

2-线性代数-题目

3-线性代数-参考答案


4-数据结构-题目


5-数据结构-参考答案

中文解释(题意)

(1) 把数列 (S={8,3,10,1,6,14,4}) 按顺序一个个用 insert 插入到二分搜索树(BST)里,画出最后生成的BST结构。

(2) 对(1)得到的树,从根开始执行 visit。注意这份 visit 是:
先输出当前节点 → 再访问左子树 → 再访问右子树 (也就是先序遍历),把输出顺序写出来。

(3) 如果输入数列本来就是升序 (例如 1,2,3,...),BST会退化成"单链条"。问此时插入(构建整棵树)的最坏时间复杂度用 (n) 的大O表示。

(4) 把(1)得到的BST通过AVL的旋转操作调整,使得任意节点左右子树高度差≤1。画出旋转后的树。(有可能不需要旋转,这是常见陷阱)


日语答案

(1)

数列 (S={8,3,10,1,6,14,4}) を先頭から順に挿入すると,最終的な二分探索木は次のとおり。

复制代码
        8
      /   \
     3     10
    / \      \
   1   6      14
      /
     4

(2)

visit は「自分→左→右」の順(先行順)で出力するので,表示順は

8,\\ 3,\\ 1,\\ 6,\\ 4,\\ 10,\\ 14


(3)

数列が昇順に整列されている場合,木は片側に偏り,高さが (n) となる。

このとき挿入を n 回行う最悪時間計算量は

O(n\^2)


(4)

(1)で得られた木について,各頂点の左右部分木の高さ差はすべて 1 以下である。

よって 回転操作は不要であり,回転後の木構造も(1)と同じである。

复制代码
        8
      /   \
     3     10
    / \      \
   1   6      14
      /
     4

中文说明(题意)

(1) 如果图用邻接矩阵表示,判断"两个顶点是否相邻(有没有边)"要看矩阵某个格子,问时间复杂度。

(2) 如果图用邻接表表示,存储整张图需要多少空间?用 (|V|=n, |E|=m) 表示。

(3) 从顶点1开始跑BFS,写出所有顶点的访问顺序 。并且:若某顶点的邻接点有多个,要按顶点编号升序依次处理。

(4) BFS运行过程中,队列Q里最多可能同时放多少个元素?用 (n) 的大O表示(上界)。

(5) 要把这个BFS改成DFS,需要把"队列相关处理"改成什么?(本质:FIFO→LIFO,或递归)


日语答案(立命馆写法)

(1)

隣接行列では,頂点 (u,v) が隣接しているかの判定は,行列の要素 (Auv) を 1 回参照すればよい。

したがって時間計算量は (O(1)) である。


(2)

隣接リストでは,各頂点ごとのリスト(頂点分)と,各辺に対応する要素(辺分)を保持する。

よって空間計算量は (O(n+m)) である。


(3)

(※この設問は本来「図のグラフ」が必要です)

頂点 1 を始点として BFS を行い,隣接頂点が複数ある場合は頂点番号の昇順に探索する。

(訪問順は,グラフの辺の向きと隣接関係に依存するため,図のグラフが与えられた場合にそれに従って列挙する。)

もし「図1のグラフ(頂点と矢印)」を送ってくれれば,その図に対して訪問順を一発で確定して書ける。


(4)

キュー Q に格納されうる要素数の最大値は,最悪でも頂点数を超えない。

したがって (O(n)) である。


(5)

BFS を DFS に変更するには,探索に用いるデータ構造を キュー(FIFO)からスタック(LIFO)に変更 すればよい。

すなわち,ENQUEUE/DEQUEUE を PUSH/POP に置き換える(または再帰呼び出しによりスタックを暗黙的に用いる)。


6-总结

训练成长。!!

相关推荐
淡海水4 小时前
08-03-不可变-ImmutableDictionary-TKey-TValue-与ImmutableHashSet-T-持久化哈希树
数据结构·算法·c#·哈希算法·dictionary·immutable
Nil2087 小时前
leetcode 78子集
数据结构·算法·leetcode
喜欢吃燃面8 小时前
深入 C++ STL:从 unordered_set与unordered_map到底层哈希表的原理与实现
数据结构·c++·散列表
en.en..8 小时前
Linux fork() 工作原理
数据结构·算法
不会就选b10 小时前
数据结构之树&&二叉树(二)
数据结构·算法
小刘在重生~12 小时前
Java 集合|Collection、List、ArrayList、LinkedList、泛型、Collections 工具类
java·数据结构·list
我不会起名字32212 小时前
一天一道算法题(29):单调栈
java·数据结构·python·算法·leetcode·golang·单调栈
苦瓜小生13 小时前
【前端】【力扣与手撕】十天带你刷完前端算法与手撕,全是最简单好记的最优解法!day4
前端·数据结构·算法·leetcode·面试
少司府14 小时前
C++进阶:智能指针
开发语言·数据结构·c++·b树·算法·c·智能指针
LuminousCPP15 小时前
数据结构-排序(一):基础排序算法横向对比|冒泡、插入、希尔、堆与双向选择,详解二分 / Knuth 增量
c语言·数据结构·笔记·算法·排序算法