î Ï Ý û Âì ú ûñ Â Â Â î À SS " À Âê À ' Î ö,à.ý E = V 1 Ý,À ) û b Àã (E) ûñ Àã Â :Ýó (V,E 0 î üú À = n 1 Â : ÂÖ : = E = k 1 Ý V = Â : ÂÖ Âê k (Ó Âã ) û (free tree " ') ö À À Ýû é Â V = k + 1 Â : ÂÖ Ý. ñ n 1 fö ì n ü SS ü Àì À õ c 2 Â õ î ü À úõ ùà È ü Àì À õ c 1 Â õ î ü À úõ ùà È ü È Ó Âã r É Èõ ö À Âê Àã À fö ì È Â è ÂÊ ä Âû r 1 r 2 r k T 1 T 2 T k ü Àì À õ c 4 Â õ î ü À úõ ùà È ü Àì À õ c 3 Â õ î ü À úõ ùà È
node) üü ùâ (nteror  è ùâ.ïâ á Ô á Ô. È ïâ (lef) ö À ùâ.à Âê  (sblng) Ýû Â,À À î ü ûùâ.à Æû. ü ú ùâ b c d e f g h È T  ï à r k r 1 û È T k T 1 ÛÖ Æõ k.à r k r 1 À r î Ï Ý Æ r. À û T " û  ' T 1,..., T k SS j k l m ü Àì À õ c 5  õ î ü À úõ ùà È ü Àì À õ c 6  õ î ü À úõ ùà È À Âê À û ó Ó ã (heght) v ùâ á Ô ü  ùâ w î Ï w ïâ v  Æõ SS  ï à ñ Ï È.À (root) È ú ú Âû ùâ SS, Æ À î ùâ. (depth - level) ùâ (Õ ä) Î.ù ö È Â Æõ ñ Ï Â Â ü Àì À õ c 8  õ î ü À úõ ùà È ü Àì À õ c 7  õ î ü À úõ ùà È
À Âê ûô À Âê  î À ö Â Ê ä Âû î ü Âõ É Èõ À À À Âê ÍÖê ùâ Â.À üõ î  (subtree) û ùâ üãì ÛÚ (forest) Àã! tree) ü (k-ry k k ùâ Âû ö À Âê Àã  î À.À (ïâ  ) ÂÔ k   ùâ Âû ö À Âê Àã ö î ü û Î ûïâ.à Æû tree) ö õ (blnced é Ýû À  î À ö ûïâ Î î ü.à (completely tree) ö õ f õ î blnced À ö Æ ö ûïâ Î î ü. ùâ À (ncestors) ùâ ö À ùâ È Â Æõ õ ûùâ Üî.Ý tree) Âõ (ordered Ýúõ ùâ Âû ö À Âê  ö î ü.à (lbeled tree) Æ Â (complete k-ry tree) Ûõ î ü k Æ Â ö ùâ Âû î ü. tree) ü (bnry. À Âê ü Àì À õ c 9  õ î ü À úõ ùà È ü Àì À õ c 10  õ î ü À úõ ùà È (descendents) ùâ v SS.Ý üõ v v È ü  õ ü ûùâ Üî Ó Âã (full tree) Â. ü ùâ Âû ö õ f õ î Ûõ î À Ã Â Ê ä Âû SS Â. descendents) üãì (proper üõ Æ üãì ùâ ö  è ùâ ô.à ncestors) üãì À (proper.à Æû üãì À ö  è À ô ü Àì À õ c 12  õ î ü À úõ ùà È ü Àì À õ c 11  õ î ü À úõ ùà È
:Û Àã B ûïâ Ü߯õ ûùâ Ûî Àã n.n 1 =(n B) k ûñ Àã ûïâ Àã,À k ÂÔ ùâ Âû ö À Âê Àã î ùâ n ü ö? À B = n (n 1)/k n B =(n 1)/k Å B =[(k 1)n + 1]/k.À  Á Ç k  À (k 1)n + 1 ü ã ü Àì À õ c 14  õ î ü À úõ ùà È ü Àì À õ c 13  õ î ü À úõ ùà È û Ç b c d e T 1...T k  k r È T :  ê f g h Â Ç :(preorder) Pre(T )=r, P re(t 1 ),Pre(T 2 ),...,Pre(T k ) j k l m reorder(a):,b,c,f,g,h,j,k,d,e,,l,m  SS :(norder) Inorder(T )=Inorder(T 1 ),r,inorder(t 2 ),...,Inorder(T k )  Š:(postorder) Post(T )=Post(T 1 ),Post(T 2 ),...,Post(T k ),r ü Àì À õ c 16  õ î ü À úõ ùà È ü Àì À õ c 15  õ î ü À úõ ùà È
b c d e b c d e f g h f g h j k l m j k l m reorder(a):,b,c,f,g,h,j,k,d,e,,l,m order(a):b,,f,c,g,j,h,k,d,l,,m,e ostorder(a): b, f, g, j, k, h, c, d, l, m,, e, preorder(a):, b, c, f, g, h, j, k, d, e,, l, m norder(a):b,,f,c,g,j,h,k,d,l,,m,e ü Àì À õ c 18 Â õ î ü À úõ ùà È ü Àì À õ c 17 Â õ î ü À úõ ùà È Â ñ ä ñ ãõ ü (. üú root[t ]) À îüõ T üú :MkeEmpty(T ) :ü Â, û : À Â üõâ T È :Root(T ) b c d e ùâ :ü Â, : À Â üõâ T v ùâ À :Prent(T,v) f g h null ùâ :ü Â,ùÂ : À Â üõâ T v ùâ À Âê SS ó :Left-Most-Chld(T,v) j k l m null ùâ :ü Â,ùÂ : ü Àì À õ c 20 Â õ î ü À úõ ùà È ü Àì À õ c 19 Â õ î ü À úõ ùà È
reorder(t,p) 1 f p = null 2 then return 3 Prnt Element(T,p) 4 p Left-Most-Chld (T,p) 5 whle p null 6 do Preorder (T,p) 7 p Rght-Sblng (T,p) p ùâ T Ç T v  :Rght-Sblng(T,v) À  üõâ ùâ :ü Â,ù : null õ  ä Àã :Sze(T ) Àä :ü Â, : üó î À îüõ É Èõ :sempty(t ) :ü Â, : À  üõâ n ùâ ÂÊ ä Æ  :Element(T,n) Æ Â :ü Â,ù : ü Àì À õ c 22  õ î ü À úõ ùà È ü Àì À õ c 21  õ î ü À úõ ùà È order(t,p) 1 f p = null 2 then return 3 n Left-Most-Chld (T,p) 4 Inorder (T,n) 5 Prnt Element(T,p) 6 n Rght-Sblng (T,n) 7 whle n null 8 do Inorder (T,n) 9 n Rght-Sblng (T,n) Postorder(T,p) 1 f p = null 2 then return 3 n Left-Most-Chld (T,p) 4 whle n null 5 do Postorder (T,n) 6 n Rght-Sblng (T,n) 7 Prnt Element(T,p) ü Àì À õ c 24  õ î ü À úõ ùà È ü Àì À õ c 23  õ î ü À úõ ùà È
odeheght(t,p) returns the heght of p n tree T 1 f sempty(t ) 2 then error 3 heght 0 4 p Left-Most-Chld (T,p) 5 whle p null 6 do heght mx{heght, NodeHeght (T,p)} 7 p Rght-Sblng (T,p) 8 return heght +1 ü õ û ù ûý Úó CountNodes(T,p) counts the number of nodes n T wth root p 1 f sempty(t ) 2 then return 0 3 count 1 4 p Left-Most-Chld (T,p) 5 whle p null 6 do count count+ CountNodes (T,p) 7 p Rght-Sblng (T,p) 8 return count ü Àì À õ c 25 Â õ î ü À úõ ùà È ü Àì À õ c 26 Â õ î ü À úõ ùà È ûû ä prent ù :SS Â :ÂÚ È ü Â r T À p. ÂÔ ö Fther Ôó õ : È. Â ÐÔ À û Â Â? Âõ û ù Fnd-Prent(T,r,p) f p = r 1 then return null 2 q Left-Most-Chld (T,r) 3 whle q null 4 do f p = q 5 then return r 6 s Fnd-Prent(T,q,p) 7 f s null 8 then return s 9 q Rght-Sblng (T,q) 10 return null û ù ü Àì À õ c 28 Â õ î ü À úõ ùà È ü Àì À õ c 27 Â õ î ü À úõ ùà È
. Âî ù À ö üõ SS p b c d e b c d e u q m f g h f g h w x z r s t j k l m 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 b c d e f g h p u q m r s t w x z 0 1 1 1 1 2 2 5 5 0 10 10 10 13 13 13 11 11 11 1 2 3 4 5 6 7 8 9 10 11 12 13 b c d e f g h j k l m 0 1 1 1 1 3 3 3 5 8 8 9 9 ü Àì À õ c 30 Â õ î ü À úõ ùà È ü Àì À õ c 29 Â õ î ü À úõ ùà È ûâ ù ù Ô :À Âû ùâ û Ôó õ,lbel ù ùâ ö ô À Â ê chld[] î Chld[1..mx-chld].À îüõ. ùâ ö À Âê Àã Â î À mx_chld ÀÖõ ü Àì À õ c 32 Â õ î ü À úõ ùà È ü Àì À õ c 31 Â õ î ü À úõ ùà È
root[t ] ñ ãõ ü : ù b c d e Âû  ùâ Ôó õ lbel f g h prent rght-sblng,left-most-chld  ù (üü ) ùâ ö À Â, À Âê SS ó j k l m ü Àì À õ c 33  õ î ü À úõ ùà È ü Àì À õ c 34  õ î ü À úõ ùà È rete2(x, T 1,T 2 ) cretes tree wth x s the lbel of ts root nd two subtrees T 1 nd T 2 (T 1 null ) 1 MkeEmpty (T ) 2 root[t ] Allocte-Node (x, root[t 1 ], null, null ) 3 rght-sblng[root[t 1 ]] root[t 2 ] 4 prent[root[t 1 ]] root[t ] 5 prent[root[t 2 ]] root[t ] 6 sze[t ] 1+sze[T 1 ]+sze[t 2 ] 7 return T Æ Öõ üæ À ûâ ù ù Ô ù ÓÜ õ ñ ä ü Àì À õ c 36  õ î ü À úõ ùà È ü Àì À õ c 35  õ î ü À úõ ùà È
ü ù ùâ ö À Âê î rght left Ôó õ ùâ Âû îüõ Ýû prent SS õ.à ü õ û ù ûý Úó Crete3(x, T 1,T 2,T 3 ) MkeEmpty (T ) 1 root[t ] Allocte-Node (x, root[t 1 ], null, null ) 2 rght-sblng[root[t 1 ]] root[t 2 ] 3 rght-sblng[root[t 2 ]] root[t 3 ] 4 prent[root[t 1 ]] root[t ] 5 prent[root[t 2 ]] root[t ] 6 sze[t ] 1+sze[T 1 ]+sze[t 2 ]+sze[t 3 ] 7 return T ü Àì À õ c 38 Â õ î ü À úõ ùà È ü Àì À õ c 37 Â õ î ü À úõ ùà È reorder(t,r) It s ssumed tht r s the root of T 1 f r = null 2 then return 3 meet element(t,r) 4 Preorder(T,left[r]) 5 Preorder(T,rght[r]) ùâ n ü û Àã 1 n T (n) = T =1 (0) T (n) = n =1 T ( 1)T (n ), 1 n ô n Àä) T (n) = 1 n+1 (ö î ( ) 2n n ü È Î SS ü Àì À õ c 40 Â õ î ü À úõ ùà È ü Àì À õ c 39 Â õ î ü À úõ ùà È
E E 1 E 2 <β> E<α> < opernd > (postfx) À Æ (Expresson Tree) ä (nfx wth complete prnthess) Ûõ î Ã Â À õ : ä û E (E 1 <β>e 2 ) ( <α>e) < opernd > <α> unry opertors <β> bnry opertors ü Àì À õ c 42 Â õ î ü À úõ ùà È ü Àì À õ c 41 Â õ î ü À úõ ùà È +(b-c*d)^e-f^g^(h /-* k) E <β>e 1 E 2 <α>e < opernd > (prefx) À È + f e g b / k c d h ü Àì À õ c 44 Â õ î ü À úõ ùà È ü Àì À õ c 43 Â õ î ü À úõ ùà È
À Æ ä (Ûõ î Ã Â fõ Ãó ) À õ ä Û À È ü Â û Æ +(b c d) e f g (h/ k) + (b c d) e f g (h/ k) + ( b c d) e f g (h/ k) +( b c d) e f g (h/ k) b +( c d) e f g (h/ k) b +( c d) e f g (h/ k) bc +( d) e f g (h/ k) bc +( d ) e f g (h/ k) bcd +( ) e f g (h/ k) bcd + e f g (h/ k) bcd + e f g (h/ k) bcd e + f g (h/ k) +(b c d) f g (h/ k) À õ (( +((b (c d)) e) (f (g ((h/( )) Ûõ î Ã Â À õ k)))) ä bcd e +fgh /k + b cde f g /h k ä ôâê À Æ À È ü Àì À õ c 45 Â õ î ü À úõ ùà È ü Àì À õ c 46 Â õ î ü À úõ ùà È on the top of stck ( + / ( Push Push Push Push Push Push Push Push Pop Pop Pop Pop Pop Pop n + Push Pop Pop Pop Pop Pop Pop p Push Push Push Pop Pop Pop Pop u / Push Push Push Pop Pop Pop Pop t Push Push Push Push Push Push Pop Push Push Push Push Push Push Pop ) Pop-more Pop Pop Pop Pop Pop Pop Acton[,j] ñ À È ü Â û Æ bcd e + f g (h/ k) bcd e +f g (h/ k) bcd e +f g (h/ k) bcd e +fg (h/ k) bcd e +fg ( h/ k) bcd e +fg ( h / k) bcd e +fgh ( / k) bcd e +fgh (/ k) bcd e +fgh (/ k) bcd e +fgh (/ k) bcd e +fgh / ( k ) bcd e +fgh /k ( ) bcd e +fgh /k bcd e +fgh /k ü Àì À õ c 48 Â õ î ü À úõ ùà È ü Àì À õ c 47 Â õ î ü À úõ ùà È
17 done true 18 else wrte s to postfx 19 POP(S) 20 whle not sempty(s) 21 do wrte TOP(S) to postfx 22 POP(S) Infx-to-Postfx(nf x) Uses stck S, ndmtrxcton 1 ntlze-ctons() 2 whle there s token n nf x 3 do red token c from nfx 4 f c s n opernd 5 then wrte c to postfx 6 else done flse 7 whle not done 8 do f sempty(s) 9 then Push (c, S) 10 done true 11 else s TOP(S) 12 f c = ) nd s = ( 13 then POP(S) 14 done true 15 f cton[c, s] = push 16 then Push (S, c) ü Àì À õ c 50 Â õ î ü À úõ ùà È ü Àì À õ c 49 Â õ î ü À úõ ùà È 12 do opertor postfx[]; 1 13 Postfx-to-Prefx (, j) 14 pref x[j] opertor 15 j j 1 Postfx-to-Prefx(, j) converts correct postfx[?..] toprefx[?..j] t the end, nd j re ether 0 or the lst ndex of the preceedng expressons. postf x nd pref x re globl rrys 1, j re refrenced vrbles swtch 2 cse postf x[] sopernd 3 do pref x[j] postf x[] 4 1; j j 1 5 cse postf x[] sbnryopertor 6 do opertor postfx[]; 1 7 Postfx-to-Prefx (, j) 8 Postfx-to-Prefx (, j) 9 pref x[j] opertor 10 j j 1 11 cse postf x[] s unry opertor ü Àì À õ c 52 Â õ î ü À úõ ùà È ü Àì À õ c 51 Â õ î ü À úõ ùà È
ndr(a, j) 1 swtch 2 cse A[j] s bnry opertor 3 do count 2 4 cse A[j] sunryopertor 5 do count 1 6 defult 7 do count 1 8 r j 9 whle Count > 0 10 do r r 1 11 swtch 12 cse A[r] s bnry opertor 13 do count count +1 14 cse A[r] s unry opertor 15 do nothng 16 cse 17 do count count 1 Postfx-to-Prefx(, j, k) converts postf x[..j] topref x[k..?] 1 f j< 2 then return 3 f = j 4 then pref x[k] postf x[] 5 else pref x[k] postf x[j] 6 r FndR (postfx, j 1) 7 Postfx-to-Prefx (, r 1, k + 1) 8 Postfx-to-Prefx (r, j 1,r + k +1) ü Àì À õ c 53 Â õ î ü À úõ ùà È ü Àì À õ c 54 Â õ î ü À úõ ùà È ostfx-to-tree(, j) Cretes tree for postfx[..j] 1 f j< 2 then return null 3 n Allocte-Node(A[j], null, null ) 4 f <j 5 then r FndR(postfx, j 1) 6 left[n] Postfx-to-Tree (, r 1) 7 rght[n] Postfx-to-Tree (r, j 1) 8 return n ü õ û ù ûý Úó 18 return r ü Àì À õ c 56 Â õ î ü À úõ ùà È ü Àì À õ c 55 Â õ î ü À úõ ùà È
Postfx-to-Tree(j) Mkes tree for postfx[?..j] js ssumed to be reference vrble 1 n Allocte-Node(A[j], null, null ) 2 swtch 3 cse postf x[j] s bnry opertor 4 do j j 1 5 rght[n] Postfx-to-Tree(j) 6 j j 1 7 left[n] Postfx-to-Tree(j) 8 cse postf x[j] s unry opertor 9 do j j 1 10 rght[n] Postfx-to-Tree(j) 11 return n ü Àì À õ c 57 Â õ î ü À úõ ùà È