




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Chapter8searchtrees17
1722
19
6
11(a)
(b)6
9
615
3(c)
(d)Figure8-3invalidbinarysearchtreesAssume:TofindT,ComparingTwithroot,T<root
goleftT>root
go
rightAlgorithm
searchBST(val
root
<pointer>,val
argument<key>)Search
a
binary
search
tree
for
a
given
value
Preroot
is
the
root
to
a
binary
tree
orsubtree
argument
is
the
key
value
requested
Return
thenode
addressif
thevalue
isfoundNullif
thenode
isnot
in
the
tree1
if(root
is
null)1
return
null2end
if3
if
(argument<root->key)1return
searchBST(root->left,argument)4
else
if(argument>root->key)1
return
searchBST
(root->right,argument)
5
else1
return
root6
end
ifOperationsonbinarysearchtree
traversalsAlgorithms
areidentical
to
theones
in
chapter
7binary
search
treesearchalgorithmsFind
smallest
nodeFind
largest
nodeFind
requested
node●Insert
nodeSteps:1.Follow
the
branches
to
an
empty
subtree2.Insert
the
new
nodeAll
inserts
take
place
ata
leaf
or
aleaflike
node
thathas
onlyone
null
branchAfterinserting23238
44
1②
20358238)
44
12
2①
35Afterinserting
192318
4
1②
20
35Afterinserting.3819Note:node
withequalvaluesarefoundinthe
right
subtree52525②1
if(root
is
null)1
root
=new2
1else
pwalk
=root2
io
p(
k
a
ull)2
1
i
pl
key)3
else4end
P*alk=pwalk>isht3
end
loopLocationfornewnodefound4
if1
(n
k->el
f
pa
>key)5
el1s
->right
=new
6end
if3
end
if4returnwt-ent<nt>e-pareweftk->llk-wpwaey<lkw-aepwf(nlknwtpotlnaparepw1oAlgorithminsertBST(ref
root<pointer>,val
new
<pointer>)Insertnodecontainingnewdata
into
BSTusing
iterationPrerootisaddressof
firstnode
in
aBSTnewisaddressof
node
containingdatatobeinsertedPostnewnodeinsertedintothe
tree23Iterativeinsert(algorithm)end
insertBSTAlgorithm
8-4
iterativebinary
search
tree
insertwalk20parent
nul812new
一
19Finalpositionwhen
pwalk
nulRecursive
insertnode(algorithm)Algorithm
addBST(refroot
<pointer>,val
new
<pointer>)InsertnodecontainingnewdataintoBSTusingrecursionPrerootisaddressof
currentnodein
a
BSTnewisaddressof
nodecontainingdatatobe
insertedPostnewnodeinsertedintothetree1
if(root
is
null)i
root=new2
elselocate
null
subtreeforinsertion1
if(new->key<root->key)1
addBST(root->left,new)2
else1
addBST(root->right,new)3
end
if3end
if4returnend
insertBSTalgorithm8-5addnodeto
BST
recursivelyDelete
node1.locate
it●
2.delete:thereare4
possible
cases-The
node
has
no
children:set
the
delete
node's
parent
to
null,recycle
itsmemory,and
return-Has
only
a
right
subtree:attach
the
right
subtree
to
the
delete
node'sparent
and
recycle
its
memory.—Has
only
a
left
subtree:attach
the
left
subtree
to
the
delete
node's
parentand
recycle
its
memory.—Has
two
subtree:to
delete
a
node
from
the
middle
of
a
tree,to
keep
thebalance,we
must
find
a
node,...,two
ways:·Find
the
largest
node
in
the
deleted
node's
left
subtree,move
its
data
toreplace
the
deleted
node's
data·Find
the
smallest
node
in
the
deleted
node's
right
subtree,move
its
data
toreplace
the
deleted
node's
data—Regardless
of
which
logic
we
use,we
will
be
moving
data
from
a
leaf
orleaflike
node
that
can
be
deleted.(a)Deletenode(44)thathasnochildrenbefore
23
dltpt(44(12
152
12(b)Delete
node(44)with
no
left
childbefore
dltpt
|231441252(c)Delete
node(18)with
no
left
childtree
dltptr12
44
~8
區(qū)4區(qū)
區(qū)2江(d)Deletenode(23)withtwochildrenafterafterafter52afterdltptr23i44beforebefore1if
(root
is
null)1
return
false
Base
case
12endif
Nodenot
find3if(ditkey<root->data.key)1return
deleteBST
(root->left,dltkey)
4
elseif(dltkey
>root->data.key)1return
deleteBST
(root->right,dltkey)5
else//deletenodefound—testforleafnode1
if(root->left
null)3recycle(dltptr)4return
true2
1el
(t
o
ght
nuI)
Base
case
2tiroo->rti
ro
cy=crloe-l
rf)t
After
node
deleted4
return
true3
elsel/
odi
f
ot
a
leaf
(or
leaflike),find
largest
node
on
left
subtree
lo)de
found,move
data
and
delete
leafnode4re
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 腳手架施工安全培訓內(nèi)容與現(xiàn)場實際操作匹配性研究考核試卷
- 納米復合材料在地鐵制造中的應(yīng)用考核試卷
- 合作伙伴關(guān)系生命周期管理考核試卷
- 產(chǎn)業(yè)政策扶持力度分析考核試卷
- 設(shè)備集成化對生產(chǎn)流程的影響考核試卷
- 農(nóng)用工具批發(fā)行業(yè)競爭格局演變考核試卷
- 供應(yīng)鏈戰(zhàn)略聯(lián)盟知識管理實踐分析考核試卷
- 2025年中國PVC-U加筋管數(shù)據(jù)監(jiān)測報告
- 2025年中國PE封口膜袋數(shù)據(jù)監(jiān)測研究報告
- 2025年中國LED不銹鋼節(jié)能電筒數(shù)據(jù)監(jiān)測報告
- 醫(yī)共體醫(yī)保管理工作制度
- 顧問銷售培訓課件
- 儲量知識考試題及答案
- 成都市住宅工程質(zhì)量常見問題防治措施
- 2025年經(jīng)濟學基礎(chǔ)知識測試試題及答案
- 2025年7月浙江省普通高中學業(yè)水平考試押題模擬暨選考意向?qū)б須v史學科試題(原卷版)
- 貴州省黔西南州、黔東南州、黔南州2025年八年級英語第二學期期末學業(yè)水平測試試題含答案
- 杭州市公安局濱江區(qū)分局招聘警務(wù)輔助人員筆試真題2024
- 2025年江蘇省高考物理試卷真題(含答案)
- DB31/ 638-2012鑄鋼件單位產(chǎn)品能源消耗限額
- 腎腫瘤超聲診斷
評論
0/150
提交評論