Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
師大資工系ACM-ICPC讀書會:肆、鏈結串列與二元樹
Search
Maplewing
December 06, 2013
Programming
0
100
師大資工系ACM-ICPC讀書會:肆、鏈結串列與二元樹
師大資工系ACM-ICPC讀書會:肆、鏈結串列與二元樹
Maplewing
December 06, 2013
Tweet
Share
More Decks by Maplewing
See All by Maplewing
資訊實務應用讀書會 第七堂課:jQuery
sinmaplewing
0
1.9k
師大資工系ACM-ICPC讀書會:參、堆疊與佇列
sinmaplewing
0
180
師大資工系ACM-ICPC讀書會:貳、排序搜尋與數學基礎
sinmaplewing
0
150
資訊實務應用讀書會 第六堂課:Basic CSS
sinmaplewing
0
1.6k
師大資工系ACM-ICPC讀書會:壹、字串處理與大數運算
sinmaplewing
0
120
師大資工系ACM-ICPC讀書會:零、比賽介紹、解題系統介紹
sinmaplewing
0
170
資訊實務應用讀書會 第四堂課(支線):Linux
sinmaplewing
0
1.7k
資訊實務應用讀書會 第一堂課:Basic HTML
sinmaplewing
1
2k
Other Decks in Programming
See All in Programming
Mermaid x AST x 生成AI = コードとドキュメントの完全同期への道
shibuyamizuho
0
160
Keeping it Ruby: Why Your Product Needs a Ruby SDK - RubyWorld 2024
envek
0
180
menu基盤チームによるGoogle Cloudの活用事例~Application Integration, Cloud Tasks編~
yoshifumi_ishikura
0
100
htmxって知っていますか?次世代のHTML
hiro_ghap1
0
320
Security_for_introducing_eBPF
kentatada
0
110
コンテナをたくさん詰め込んだシステムとランタイムの変化
makihiro
1
120
これが俺の”自分戦略” プロセスを楽しんでいこう! - Developers CAREER Boost 2024
niftycorp
PRO
0
180
TypeScript でバックもやるって実際どう? 実運用で困ったこと3選
yuichiro_serita
17
7.7k
Итераторы в Go 1.23: зачем они нужны, как использовать, и насколько они быстрые?
lamodatech
0
350
なまけものオバケたち -PHP 8.4 に入った新機能の紹介-
tanakahisateru
1
120
暇に任せてProxmoxコンソール 作ってみました
karugamo
1
710
創造的活動から切り拓く新たなキャリア 好きから始めてみる夜勤オペレーターからSREへの転身
yjszk
1
120
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Why Our Code Smells
bkeepers
PRO
335
57k
Designing for humans not robots
tammielis
250
25k
Done Done
chrislema
181
16k
Producing Creativity
orderedlist
PRO
341
39k
The Cost Of JavaScript in 2023
addyosmani
45
7k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Site-Speed That Sticks
csswizardry
2
190
Building Applications with DynamoDB
mza
91
6.1k
Transcript
肆、鏈結串列與二元樹 師大資工系 灆洢 取自於<提升程式設計的邏輯思考力> 6.2 & 6.3
鏈結串列
struct node{ int value; node *next; }; 單向鏈結串列 Singly Linked
List 22 12 32
插入新節點 22 12 32 5 node node.next newnode newnode.next =
node.next; node.next = newnode;
刪除節點 22 12 32 node node.next node.next.next node *delnode =
node.next; node.next = node.next.next; delete delnode;
struct node{ int value; node *prev, *next; }; 雙向鏈結串列 Doubly
Linked List 22 12 32
• List containers are implemented as doubly-linked lists. C++ STL:
list
•127 •101 •133 •10152 •673 •442 作業 •11111 •11234 •540
•10050
二元樹
• 任兩點之間都相通,並且沒有環的圖。 • 來源:演算法筆記 樹 Tree
二元樹 Binary Tree
• 陣列 • 以0為root • 往編號n之左子樹:2*(n+1) - 1 • 往編號n之右子樹:2*(n+1)
• 往父節點:floor((n-1)/2) • 鏈結串列 • struct node { int data; node *left, *right; }; 儲存方式
需要用queue 廣度優先搜尋 BFS: Breadth-first search
深度優先搜尋 DFS: Depth-first search 需要用recursion或stack
樹的走訪:前序、中序、後序
function Preorder(node){ if(!node.left && !node.right){ print(node.value); return; } print(node.value); Preorder(node.left);
Preorder(node.right); } Ans: F,B,A,D,C,E,G,I,H 前序
function Inorder(node){ if(!node.left && !node.right){ print(node.value); return; } Preorder(node.left); print(node.value);
Preorder(node.right); } Ans: ABCDEFGHI 中序
function Postorder(node){ if(!node.left && !node.right){ print(node.value); return; } Preorder(node.left); Preorder(node.right);
print(node.value); } Ans: ACEDBHIGF 後序
• 給予前序與中序,如何找出後序? • 前:DBACEGF 中:ABCDEFG • 後:ACBFGED 問題:二元樹重建
作業 •112 •548 •297 •712 •699 •327 •839 •10562
謝謝聆聽 資料取自於<提升程式設計的邏輯思考力> 6.2 & 6.3