??n????????T,???????(n>0)????????????;???????m?(m=0)???????T1,T2 - PowerPoint PPT Presentation

1 / 104
About This Presentation
Title:

??n????????T,???????(n>0)????????????;???????m?(m=0)???????T1,T2

Description:

Title: 1 Author: boss Last modified by: Administrator Created Date: 8/23/2006 2:01:36 AM Document presentation format: – PowerPoint PPT presentation

Number of Views:30
Avg rating:3.0/5.0
Slides: 105
Provided by: boss89
Category:
Tags: coding | huffman

less

Transcript and Presenter's Notes

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 ????????

7
6.1 ?????????
  • 6.1.1 ????
  • ??n????????T,???????(ngt0)???????????????????m?(m
    0)???????T1,T2Tm,??,????????????,????????
  • ?n0?,?????
  • ????T1,T2Tm??????,????????????????
  • ?????????????,???????????,??????????,?????????????
    ?????????6-1?

8
(No Transcript)
9
6.1.2 ????
  • 1.?? ???????????????????????
  • 2.??????????????????????????????(Degree)????0???,
    ???????????????????????????????,?????,????????(???
    0???)??????????????????????

10
  • 3. ??????????????????????????????????,??,????????
    ?????????
  • 4. ????????????????????????
  • 5. ????????????????????????????????????,?????????
    ??????????,????????????

11
  • 6. ????????????,???????(Level)????????????????,??
    ???????????????????????????????????????????????
  • 7.??? ?????????????????????,???????????????
  • 8. ??? ????????????????,???????9.
    ????????????????????????????????????

12
(No Transcript)
13
?????????
  • ?????????????????????????
  • ?????????????????????(?????),??????????????(?????)
    ?
  • ??????????,??????
  • ??????,????????
  • ???????????

14
6.2 ???
  • 6.2.1 ??????
  • 6.2.2 ??????
  • 6.2.3 ????????

15
6.2.1 ??????
  •    ????????,??????????????? ????n(n0)???????,??
    ????(n0),?????????????????????????
  •      ??????????????????,???,???????????2???,????
    ?????(?????),?????????????,????????????

16
??????????
(a) ???? (b) ??????????? (c) ????????? (d)
????????? (e) ????????????
17
(No Transcript)
18
6.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)??,????????

26
6.2.3 ????????
  • 1.??????
  • 2.??????

27
1.??????
  • ??
  • ??????????????????
  • 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
??
  • ???????????????
  • ????????,???????????

32
2. ????
???? ????????????,?????????????,??????? ??data
????,???????????,lchild?rchild?????????????,??????
?????????????????
33
????
  • typedef struct BiTNode
  • TElemType data
  • struct BiTNode lchild, rchild
  • BiTNode, BITree
  • ???TElemType?????????????int?float?char??

34
????
  • ? ????

35
3. ????
????????????,???????????????????,??????? ??data
????,???????????,lchild?rchild?????????????,??????
????????????????,parent???????
rchild
parent
36
6.3 ???????????6.3.1 ?????
  • ????????(Traverse)??????????????????,????????????
    ???
  • ????????????????????????????????????????
  • ???????????????

37
  • ???????????????????????????,????????????,?????????
    ??
  • ????????,???????????????????,????????,????????,??
    ????
  • ??????????????????
  • ??????????????????
  • ??????????????????????,?????????????????,?????????
    ??????????

38
??????????????
  • (1) ??(InOrder)??
  • ?????????,???????????????
  • ???????
  • ?????
  • ????????
  • (2) ??(PreOrder)??
  • ?????????,???????????????
  • ?????
  • ???????
  • ????????

39
  • (3) ??(PostOrder)??
  • ?????????,???????????????
  • ???????
  • ???????
  • ??????

40
???????
  • ??????
  • ??????
  • ??????
  • HDIBEAFCG

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.??????????????

45
1.????????
  • 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

46
2.????????
  • void PreOrder(BITree T)
  • if (T)
  • printf(T-gtdata)
  • PreOrder(T-gtlchild)
  • PreOrder(T-gtrchild)

47
3.??????????
  • void PreOrder(BITree T)
  • if (T)
  • if(T-gtlchildNULLT-gtrchildNULL)
  • printf(T-gtdata)
  • PreOrder(T-gtlchild)
  • PreOrder(T-gtrchild)

48
4.????????????
  • 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.?????????????????????

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)?????,
  • ?????????????????

57
6.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)

66
6.4 ????
  • 6.4.1 ??????
  • 6.4.2 ?????????
  • 6.4.3 ???????

67
6.4.1 ??????
  • 1.?????
  • 2. ?????
  • 3.???????

68
1.?????
  • ????????????????????,?????????????????????????????
    ?? .????????

??? ?????
data parent
69
????????????
  • define MAX 100
  • typedef struct PTNode //????
  •    TElemType data
  •    int parent
  • PTNode
  • typedef struct //???
  • PTNode nodesMAX
  • int r,n //????????
  • PTree

70
???????
71
2. ?????
  • ?????????????????????,???????,???????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
74
3. ???????
  • ???????????????,?????????,????????????????????????
    ????,?????????????????????(???)???

75
????
  • typedef struct CSNode
  •     ElemType data  /????/
  • Struct CSNode firstChild, Nextsibling 
    /?????,?????/
  • CSNode, CSTree

76
?????????
77
6.4.2 ?????????
  • ?????????????????????????????????,???????????,????
    ???????????????????????????????????????????

78
1.???????
  • ????
  • (1)?????????????
  • (2) ????????,?????????????????,???????????????? 
  • (3)?????????,??????????????,?????????

79
?????????
80
2.????????
  • ????????????????????,????????????????,????????????
    ??????
  • ????
  • (1) ??????????????????
  • (2)????????,?????????,????????????????????????????
    ,???????????,?????????????????????

81
??????????
82
6.4.3  ???????
  • 1.????
  • ?????????
  • (1)  ????
  • ????,??????
  • ??????
  • ????,????????????????
  •   (2)????
  • ????,??????
  • ????,????????????????
  • ??????

83
??????
  • ????
  • ???????ABECFHGD
  • ???????EBHFGCDA

84
2.?????
  • ??????????????
  • (1) ????
  • ?????,??????
  • ??????????????
  • ??????????????????
  • ??????????????????????

85
  •     (2)  ????
  • ?????,??????
  • ?????????????????????
  • ???????????
  • ??????????????????????

86
???????
  • ?????
  • ???????ABCDEFGHIJ
  • ???????BCDAFEHJIG

87
6.5 ????????
  • 6.5.1 ????(?????)
  • 6.5.2 ?????

88
6.5.1 ????(?????)
  • 1. ????
  • ?????????????????????????????????
  • ????????????????????????
  • ?????????????????????????????,????pl?
  • ????????????,??????????????????

89
  • pl011222210

pl011222311
90
  • ????????????,???????????????????,????????
  • ????????????????????????????????????????????????

91
  • ????????????????????????????,????
  • ??n????????,wi?li????????ki??????ki????????
  • ????n???,?????????????,???????n?????????,?????????
    ???wpl?????

92
??wpl????
  • ?????7,5,2,4????????,????????????

wpl36
93
??wpl????
  • wpl46

wpl35
94
  • ????????????,?????????n???w1,w2,,wn,??????????
    ????????????,??????WPL?????????????
  • ???(Huffman)?1952????????????,???????????????

95
2. ??????
  • ?n???w1,w2,,wn???????,?????w1,w2,,wn,???????w1
    ?w2,????????????????????????,?????????w12w1w2
  • ?w12?????????w3?wn??,????????????
  • ????????????????????????,?????????????,???????????
    ???????????,??????????????????,???????????,???????
    ?

96
????????
  • ??4??7,5,2,4?

97
(No Transcript)
98
(No Transcript)
99
6.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??????
    ??,????????????????

100
Huffman???
  • 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)?????????????
Write a Comment
User Comments (0)
About PowerShow.com