Title: ??n????????T,???????(n>0)????????????;???????m?(m=0)???????T1,T2
1(No Transcript)
2(No Transcript)
3????
4? 6 ? ?????
- ? ? ?
- ????????????
- ??????
- ??????
- ????
- ? ?
- ??????????
- ?????????,????????????,????????
5? 6 ? ?????
- ? ?
- ????????
- ??????????????
- ??????????
- ????????????????
- ??????
- ??????????????
- ?????????????
- ????????
6? 6 ? ?????
- 6.1 ?????????
- 6.2 ???
- 6.3 ???????????
- 6.4 ????
- 6.5 ????????
76.1 ?????????
- 6.1.1 ????
- ??n????????T,???????(ngt0)???????????????????m?(m
0)???????T1,T2Tm,??,????????????,???????? - ?n0?,?????
- ????T1,T2Tm??????,????????????????
- ?????????????,???????????,??????????,?????????????
?????????6-1?
8(No Transcript)
96.1.2 ????
- 1.?? ???????????????????????
- 2.??????????????????????????????(Degree)????0???,
???????????????????????????????,?????,????????(???
0???)??????????????????????
10- 3. ??????????????????????????????????,??,????????
????????? - 4. ????????????????????????
- 5. ????????????????????????????????????,?????????
??????????,????????????
11- 6. ????????????,???????(Level)????????????????,??
??????????????????????????????????????????????? - 7.??? ?????????????????????,???????????????
- 8. ??? ????????????????,???????9.
????????????????????????????????????
12(No Transcript)
13?????????
- ?????????????????????????
- ?????????????????????(?????),??????????????(?????)
? - ??????????,??????
- ??????,????????
- ???????????
146.2 ???
- 6.2.1 ??????
- 6.2.2 ??????
- 6.2.3 ????????
156.2.1 ??????
- ????????,??????????????? ????n(n0)???????,??
????(n0),????????????????????????? - ??????????????????,???,???????????2???,????
?????(?????),?????????????,????????????
16??????????
(a) ???? (b) ??????????? (c) ????????? (d)
????????? (e) ????????????
17(No Transcript)
186.2.2 ??????
- ??1
- ????????1??,??????i????,???2i-1?(i1)?
201
212
224
238
19??2
- ??(??)?k??????????2k-1(k1)?
- ????????2021222k-1
-
- 2k-1
20??3
- ????????,?????????n0,??2??????n2,??n0n21?
- ???n0,n1?n2?????????0,??1???2?????,???????????n??
nn0n1n2 ? - ?????????,????????????,????B????????????
- nB1 ?
- ??,??????????1?2??????,?? Bn12n2 ?
- ?????? n0n21
21????
- ???????,??i??????2i-1,???????????,???????????,????
???????? - ?????????,????????????0??,????????????2,??????????
? - ?????????????(????),????????,?????????????????????
?????,???????i???2i-1???(i1),?????h???????????2h-
1?
22?6.3 ????
23?????
- ?????????????,??????????????n???,?????????????
- ???6.3??????,??????11???15???(????????????),??????
???? - ???????????n,????????????
- 2h-1-1ltn 2h-1
- ?n??????h-1?????????,?????????h??????????
24(No Transcript)
25- ???????,??????????????,??????????????????,??????
??????? - ??????????????i???(1in),?????????????????i??????
? - 1) ??i1,??????????,?????igt1,???????? ?
- 2) ??2in,??????????2i?2igtn,????????
- 3) ??(2i1)n,??????????(2i1)??,????????
266.2.3 ????????
271.??????
- ??
- ??????????????????
- C????
- define MAX_TREE_SIZE 100//?????????
- typedef TElemType SqBiTreeMAX_TREE_SIZE
- //0????????
- SqBiTree bt
28- ??
- ??,????????????????????????,????????????????,?????
????????????????????? - ?????????,?????????????,????i???????????i???(???
i-1)?
29??????????
1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 6 7 8 9
30???????????
- ?
- ?????????
- ?????21???????7?.?????,?????k???k???????,??????2k-
1?????.
31??
- ???????????????
- ????????,???????????
322. ????
???? ????????????,?????????????,??????? ??data
????,???????????,lchild?rchild?????????????,??????
?????????????????
33????
- typedef struct BiTNode
-
- TElemType data
- struct BiTNode lchild, rchild
- BiTNode, BITree
- ???TElemType?????????????int?float?char??
34????
353. ????
????????????,???????????????????,??????? ??data
????,???????????,lchild?rchild?????????????,??????
????????????????,parent???????
rchild
parent
36 6.3 ???????????6.3.1 ?????
- ????????(Traverse)??????????????????,????????????
??? - ????????????????????????????????????????
- ???????????????
37- ???????????????????????????,????????????,?????????
?? - ????????,???????????????????,????????,????????,??
???? - ??????????????????
- ??????????????????
- ??????????????????????,?????????????????,?????????
??????????
38??????????????
- (1) ??(InOrder)??
- ?????????,???????????????
- ???????
- ?????
- ????????
- (2) ??(PreOrder)??
- ?????????,???????????????
- ?????
- ???????
- ????????
39- (3) ??(PostOrder)??
- ?????????,???????????????
- ???????
- ???????
- ??????
40 ???????
ABDHIECFG
HIDEBFGCA
41????????
- void InOrder(BITree T)
-
- if (T)
-
- InOrder(T-gtlchild)
- visit(T-gtdata)
- InOrder(T-gtrchild)
-
42????????
- void PreOrder(BITree T)
-
- if (T)
-
- visit(T-gtdata)
- PreOrder(T-gtlchild)
- PreOrder(T-gtrchild)
-
43????????
- void PostOrder(BITree T)
-
- if (T)
-
- PostOrder(T-gtlchild)
- PostOrder(T-gtrchild)
- visit(T-gtdata)
-
44???????
- ????????????????
- ??
- 1.??????????
- 2.??????????????
451.????????
- Status CreateBiTree(BITree T)
- scanf(ch)
- if(ch) TNull
- else
- if (!(T(BiTNode )malloc(sizeof(BiTNode)))
) - exit (OVERFLOW)
- T-gtdatach
- CreateBiTree (T-gtlchild)
- CreateBiTree (T-gtrchild)
-
- return OK
462.????????
- void PreOrder(BITree T)
-
- if (T)
-
- printf(T-gtdata)
- PreOrder(T-gtlchild)
- PreOrder(T-gtrchild)
-
473.??????????
- void PreOrder(BITree T)
-
- if (T)
- if(T-gtlchildNULLT-gtrchildNULL)
- printf(T-gtdata)
- PreOrder(T-gtlchild)
- PreOrder(T-gtrchild)
-
484.????????????
- int n0
- void leafcount(BITree T)
-
- if (T)
- if(T-gtlchildNULLT-gtrchildNULL)
- n
- leafcount (T-gtlchild)
- leafcount (T-gtrchild)
-
49??
- 1. ?????????????1,3,7,2,12.
- (1)?????????????
- (2)?????????,????????????????????
50??
- 1. ?????????????1,3,7,2,12.
- (1)?????????????
- (2)?????????,????????????????????
51??
- 1. ?????????????1,3,7,2,12.
- (1)?????????????
- (2)?????????,????????????????????
52??
1
2
3
?? 12345
4
??24531
5
??54321
53??
- 3.??????????????????????,?????????
- ??ABCDEFGHIJK
- ??CBEDFAHJKIG
- ??CEFDBKJIHGA
54??
- 4.?????????????????(???????)???????????????,??????
?????????????????????????????ABCDEFGHIJ,?????DBGEH
JACIF,.????????
55?????????
- ???????????????????????????????????
b
--
c
a
T
--
--
a
c
b
c
b
a
--
c
b
a
56???????
???? void InOrder(BiTree T) InitStack(S)Push(S,
T) while (!StackEmpty(S)) while(GetTop(S,p)p
) Push(S,p-gtlchild) Pop(S,p)
if(!StackEmpty(S)) Pop(S,p)visit(p-gtdata)
Push(S,p-gtrchild)//if //while
- ????
- 1.????,?????
- 2.?????
- (1)????????,???????????
- (2)???????
- (3)?????,
- ?????????????????
576.3.2 ?????
- ????
- ???n???????????,?n1?????????,????????????????????
??????????????? - ??????????????????????????????????????????
- ?????????????????????????????????????????,???????
??????????
58- ?????????,???????????????????????????
- ?????????????,???????LTag,??????RTag?
lchild?????????
LTag
lchild????????
rchild?????????
RTag
rchild????????
59- ??????????????
- ????????????????????
- typedef enum PointerTagLink,Thread
- typedef struct BiThrNode
-
- ElemType data
- PointerTag LTag,RTag /ltag?rtag?????0?1
/ - struct BiThrNode lchild,rchild
- BiThrNode,BiThrTree
lchild LTag data RTag rchild
60?????
61???????
- ??
- ????????????,??????????????????,????????1???(??
???)?????????????? - ??????,?????????????,?????????,?????
62??????????????
- void thinorder(BiThrTree T)
- //?????????,T?????
- p T-gtlchild//p?????
- whild(p!T) /????????,pT/
- while(p-gtLTagLink)
- pp-gtlchild /??????"??"???,??????????/
- visit(p-gtdata)//?????????
- while(p-gtRtagThreadp-gtrchild!T)
- pp-gtrchildvisit(p-gtdata)/??????/
- pp-gtrchild
- return OK
63?????
- ????????????????????????????,???????????????,???
????? - ????????pre????????????,????p????????????pre????
?NULL?
64???????
- void inthread (BiThrTree p,pre)
- if(p)
- inthread(p-gtlchild,pre) /??????/
- if(p-gtlchildNULL)
- /???????????,???????????????/
- p-gtltag1
- p-gtlchildpre
-
- else
- p-gtltag0
65????????
- if (pre!NULL pre-gtrightNULL)
- /????????,????????,???????????????????/
- pre-gtRTag1
- pre-gtrchildp
-
- else
- pre-gtRTag0
- prep /??????????/
- inthread (p-gtrchild,pre)
-
-
666.4 ????
- 6.4.1 ??????
- 6.4.2 ?????????
- 6.4.3 ???????
676.4.1 ??????
- 1.?????
- 2. ?????
- 3.???????
681.?????
- ????????????????????,?????????????????????????????
?? .???????? -
??? ?????
data parent
69????????????
- define MAX 100
- typedef struct PTNode //????
-
- TElemType data
- int parent
- PTNode
- typedef struct //???
-
- PTNode nodesMAX
- int r,n //????????
- PTree
70???????
712. ?????
- ?????????????????????,???????,???????n?????n?????(
???????????),?n???????n?????????????????.
72????
- typedef struct CTNode // ????????
- int child // ?????????????
- struct CTNode next//?????????
- ChildPtr
- typedef struct // ?????????? TElemType
data // ????? - ChildPtr firstChild // ????????
- CTBox
- typedef struct // ????
- CTBox nodesMAX // ???
- int n,r // ????????
- CTree
73???????
4
5
6
7
6
743. ???????
- ???????????????,?????????,????????????????????????
????,?????????????????????(???)???
75????
- typedef struct CSNode
-
- ElemType data /????/
- Struct CSNode firstChild, Nextsibling
/?????,?????/ - CSNode, CSTree
76?????????
776.4.2 ?????????
- ?????????????????????????????????,???????????,????
???????????????????????????????????????????
781.???????
- ????
- (1)?????????????
- (2) ????????,?????????????????,????????????????
- (3)?????????,??????????????,?????????
79?????????
802.????????
- ????????????????????,????????????????,????????????
?????? - ????
- (1) ??????????????????
- (2)????????,?????????,????????????????????????????
,???????????,?????????????????????
81??????????
826.4.3 ???????
- 1.????
- ?????????
- (1) ????
- ????,??????
- ??????
- ????,????????????????
- (2)????
- ????,??????
- ????,????????????????
- ??????
83??????
- ????
- ???????ABECFHGD
- ???????EBHFGCDA
842.?????
- ??????????????
- (1) ????
- ?????,??????
- ??????????????
- ??????????????????
- ??????????????????????
85- (2) ????
- ?????,??????
- ?????????????????????
- ???????????
- ??????????????????????
86???????
- ?????
- ???????ABCDEFGHIJ
- ???????BCDAFEHJIG
876.5 ????????
- 6.5.1 ????(?????)
- 6.5.2 ?????
886.5.1 ????(?????)
- 1. ????
- ?????????????????????????????????
- ????????????????????????
- ?????????????????????????????,????pl?
- ????????????,??????????????????
89pl011222311
90- ????????????,???????????????????,????????
- ????????????????????????????????????????????????
91- ????????????????????????????,????
- ??n????????,wi?li????????ki??????ki????????
- ????n???,?????????????,???????n?????????,?????????
???wpl?????
92??wpl????
- ?????7,5,2,4????????,????????????
wpl36
93??wpl????
wpl35
94- ????????????,?????????n???w1,w2,,wn,??????????
????????????,??????WPL????????????? - ???(Huffman)?1952????????????,???????????????
952. ??????
- ?n???w1,w2,,wn???????,?????w1,w2,,wn,???????w1
?w2,????????????????????????,?????????w12w1w2 - ?w12?????????w3?wn??,????????????
- ????????????????????????,?????????????,???????????
???????????,??????????????????,???????????,???????
?
96????????
97(No Transcript)
98(No Transcript)
996.5.2 ?????
- ?????(Haffman coding)???????????????????,?????????
??20?90,????????????????? - ?????????????,?????????,??????????????????????????
? - ??????CAST_TAT_A_AS,??????????f(C)1,f(S)2,
f(T)3,f(_)3,f(A)4????1,2,3,3,4??????
??,????????????????
100Huffman???
- C S T _ A
- 000 001 01 10 11
101- ???????????????????????,???0??????,???1??????,???
????????????,?????????????????? - ???????????????????,??????????????????????????????
????????????????????????,???????????wpl???????????
??
??
102? ?
- ?
- ???
- ????
- ?????
- ??????
- ??????
- ??????
- ??????
- ????
- ????
- ????
- ?????
- ????
- ????
103???
- 1.????????????
- typedef struct BiTNode
-
- TElemType data
- struct BiTNode lchild, rchild
- BiTNode, BITree
- ?????????????????????????x????????,?????????????BT
?????????????? - int BTreeCount(BiTree BT, TElemType x)
104- 2.?????????????ABCDEFGHIJ??????DBGEHJACIF,??????
- 3. ???????????a,b,c,d,e,????????4,7,5,2,9?
- (1)????????????(??????????????????????)?
- (2)?????????????