Title: ????(P85)
17.1 ???????
- ????(P85)
- ?n(n0)??????????n0?,?????????????????
- ? ???????????????
- ? ?ngt1?,??????????????m(mgt0)??????????T1,T2,
,Tm,???????????,???????????? - ???????????
2- ??????(P86)
- ????????????????
- ??????0???,????????
- ???????0???,?????????
- ??????????????
- ???????????????????????????,????????????????
- ????????????????????
- ??????????n1, n2, , nk???????ni?ni1???(1ltiltk)
,??n1, n2, , nk?????n1?nk????????????????????
3- ??????(?)
- ????????,??????????x???y,??x???y???,?y??x????
- ?????????????1???????,??????i?,????????i1??
- ???????????????,?????
- ????????????????????????????,??????????,??????
- ??m (m0)???????????
47.2 ?????????
- ?????????
- ??????????,????????,????????
- ????????????????????,?????????????????????
57.2 ?????????
- ??????(P88)
- ????n(n0)????????,????????(??????),??????????????
?????????????????????????
67.2 ?????????
- ??????
- ??????????0,1,2
- ???????,???????????,?????????????????
77.2 ?????????
87.2 ?????????
?????3????????3??????????
97.2 ?????????
- ??????
- ????
- ???????,??????????????????,?????????????
- ???????
- ???????????
- ????0???2????
107.2 ????????? p89
- ??1 ?????i?????2i-1???(i1)?
- ??2?????k?????,???2k-1???,???k????
- ??3???????,????????n0,??2?????n2,?? n0n21?
117.2 ?????????
127.3.1 ??????????(P91)
- ??????????????????????????,?????????(??)??????????
???????? - ?????????????????????
- ??????5??????????????????????????????,?????????
- ??C/C?????????0,???i?????????i?1?????
- ????????????????????????????????? ?
137.3.1 ??????????
147.3.2 ??????????(P92)
- ?????????????????????,??????????????????????,????
??????????
????
??,data???,??????????
lchild????,??????????
rchild????,???????????
15????????
template ltclass Tgt struct BiNode T data
// ???? BiNodeltTgt lchild // ??????
BiNodeltTgt rchild // ??????
167.3.2 ??????????
?
?
177.3.2 ??????????
?
?
??n?????????,?n1?????
18???????????????????BiTree
template ltclass Tgt class BiTree BiNodeltTgt
root // ??? public BiTree()
rootNULL BiTree(vectorltTgt pre) //
??????????? BiTree(vectorltTgt pre,vectorltTgt
mid) // ??????????? BiTree(BiTreeltTgt
tree) // ?????? BiTree()
// ???? void
PreOrder() // ????
void InOrder() // ????
void PostOrder() //
???? void LevelOrder()
// ???? int Count()
// ?????? int Height()
// ???????? BiNodeltTgt Search(T e)
// ???e???? BiNodeltTgt
SearchParent(BiNodeltTgtchild) // ??????????
197.4 ??????
??????????????,?????????????????,?????????????????
??
???????????
207.4 ??????
????????
????????,??????????? ??DLR ??LDR ??LRD
??????????????????????
217.4 ??????
??????? ???????,?????? (??) ?????? ????????????
?????????????
??????A B D G C E F
22????????
template ltclass Tgt void BiTreeltTgtPreOrder(BiNode
ltTgt p) if (pNULL) return // ?
cout ltlt p-gtdata // ?
PreOrder(p-gtlchild) // ?
PreOrder(p-gtrchild) // ? template ltclass
Tgt void BiTreeltTgtPreOrder() PreOrder(root)
237.4 ??????
??????? ???????,?????? (??) ???????????? ??????
?????????????
??????D G B A E C F
24????????
template ltclass Tgt void BiTreeltTgtInOrder(BiNodelt
Tgt p) if (pNULL) return // ?
InOrder(p-gtlchild) // ? cout ltlt
p-gtdata // ? InOrder(p-gtrchild)
// ? template ltclass Tgt void BiTreeltTgtInOrder(
) InOrder(root)
257.4 ??????
??????? ???????,?????? (??) ???????????? ???????
?????? ??????
??????G D B E F C A
26????????
template ltclass Tgt void BiTreeltTgtPostOrder(BiNod
eltTgt p) if (pNULL) return // ?
PostOrder(p-gtlchild) // ?
PostOrder(p-gtrchild) // ? cout ltlt
p-gtdata // ? template ltclass Tgt void
BiTreeltTgtPostOrder() PostOrder(root)
27?????????
P132 7.2
287.4 ??????
??????? ??????????????????(????)??,????????,?????,
?????????????????
??????A B C D E F G
297.4 ??????
????
A
B
C
D
E
F
G
????
A
B
C
G
D
E
F
30??????????
- ??Q???
- 2. ???????,??????
- 3. ??????Q??
- 3.1 p??Q???????
- 3.2 ????p????
- 3.3 ???p?????,?????????
- 3.4 ???p?????,?????????
31?????????
template ltclass Tgt void BiTreeltTgtLevelOrder()
queueltBiNodeltTgt gt Q // Q????? if
(rootNULL) return
Q.push(root) while
(!Q.empty())
BiNodeltTgt pQ.front() Q.pop()
coutltltp-gtdata if (p-gtlchild)
Q.push(p-gtlchild) if (p-gtrchild)
Q.push(p-gtrchild)
327.4 ??????
- ??????
- ?????????????,???????????????,??????????
- ????????????????
- ?????????,????????????????????,????????,??????,
???????????????????????
33????????????A B D C
34????????????????????
???? ???????,?????? (??) ?????? ???????????? ??
???????????
???? ?????(?),?rootNULL (??) ?????? ???????????
? ?????????????
35template ltclass Tgt BiTreeltTgtBiTree(vectorltTgt
pre) int i0
rootCreateByPre(pre,i) template ltclass
Tgt BiNodeltTgt BiTreeltTgtCreateByPre(vectorltTgt
pre,int i) char eprei i
// ?????? if (e'') return NULL
// ????????? BiNodeltTgt pnew BiNodeltTgt
p-gtdatae // ????? p-gtlchildCreateByPre(pre
,i) // ????? p-gtrchildCreateByPre(pre,i)
// ????? return p
36????????ABC,????????5??
37??????????ABC,???????CBA,????????????
38??????????????????????????ABCDEFGHI
?BCAEDGHFI,??????????
39??A B C D E F G H I??B C A E D G H F I
??B C ??B C
?? D E F G H I ?? E D G H F I
40??F G H I ??G H F I
?? D E F G H I ?? E D G H F I
417.5 ??????????
- ????????????????,???????????????????????????,?????
????,???????????,?????????????????? - ????????? (P104)
- ????????(P105)
- ???????????
427.6.1 ????????
- ???????????????,????????????????,???????
- ??????,??????????????,???????????????????????????,
????????????????? - ?????????????????,????????????????????O(n),???????
??,??????? - ??????????????????????,??????????????,????????????
????,?????????????????
437.6.1 ????????
- ????????????????????????????????
- ?????????????????????????????????
- ?????????????????????
447.6.1 ????????
????
457.6.1 ????????
????
enum BiThrNodePointTypeLINK,THREAD template
ltclass Tgt struct BiThrNode
BiThrNodePointType ltype,rtype T data
BiThrNodeltTgt lchild,rchild
467.6.1 ????????
- ?????????4?,??4??????????,????4??????
- ? ???????
- ? ???????
- ? ???????
- ? ???????
47????????
??????? ?????ABCD
48????????
??????? ?????BADC
49????????
??????? ?????BDCA
50???????????P???
- ???????????????,??????????,???????
- 1)??????????1,?????,?????????????????????
- 2)??????????0,?????????,?????????,????????????????
???????????,????????????????,?????????1?,?????????
???
51???????????P???
- ???????????????,??????????,???????
- 1)??????????1,?????,?????????????????????
- 2)??????????0,?????,?????????,?????????,??????????
?????????????????,????????????????,?????????1?,???
?????????
527.7.1 ??????
- ????
- ??????,??????????????,???????????????????
- ???????
- ????,?????????????,?????????????
- ??????
- ???(?????)??????
- ???????
- ??????(?)?????(?)?????(?)???????
53??????????? ????,???????? ? ????? ?
???????????????????????
?????? A B D E H I F C G
54??????????? ????,???????? ? ????????????????????
?? ? ??????
?????? D H I E F B G C A
557.7.2 ??????
- ????????,??????
- ????????????????
- ????????
- ????????????
567.7.2 ??????
- 1)?????
- ?????????????,??????????????????????
577.7.2 ??????
- 2)???????
- ?????????????????????????????????????????????????
????K,?????????K??????,????????
587.7.2 ??????
- 3)???????
- ????????????????,n????n?????,n????????????,???????
????
597.7.2 ??????
- 4)???????
- ?????????????,???????????????????????????????????
607.8 Huffman??Huffman??
?????
???????????????????? ? if (alt60) bbad
else if (alt70) bpass else if
(alt80) bgeneral else if (alt90)
bgood else bexcellent
61??,??????,????????????????????????,??????????,????
?????????,?????????????????,???????????????????,??
?????????? ?? 0-59 60-69 70-79
80-89 90-100 ??? 0.05
0.15 0.40 0.30
0.10 ?80?????????????????????????
62????
- ?????????????????????????
- ????????????????n?????????,??????????????????????
???????????
WPL
63????
- ??????????????????????????ASCII,????
- ??????????????????????
- ????????????????????????
64????
- ??????????????????????????? ?
- ???????????????????
657.8.1 Huffman?
???????????????????,?????????????
???4?????,??????2,3,4,7,????????????????
WPL32 WPL41
WPL30
667.8.1 Huffman?
- ???????
- 1. ???????????????,?????????????????
- 2. ????0(????)???2(????)???,?????1???.
7
2
4
3
2
3
4
7
2
4
3
7
677.8.2 Huffman????
W2,3,4,5 ?????????
?1????
?2??????
?3??????
68W2,3,4,5 ?????????
5
4
5
???2?
2
3
???3?
69W2,3,4,5 ?????????
???2?
???3?
707.8.3 Huffman???? Huffman??
- ?????A, B, C, D, E, F, G????????9, 11, 5, 7,
8, 2, 3,???????????
71???? A00 B10 C010 D110 E111 F0110 G0111