You are on page 1of 4

BI T CHA PHN BINARY TREE

I. Phong cch lp trnh: Phn lm c nhiu im sa nhng ci nho nh. Mong c c ht. Tuy ch nh thi nhng em thy cng quan trng. 1. K thut lm vic vi bin. t tn cho bin: T xc nh cho mnh mt phong cch t tn cho bin.: Nu l hng th lun vit hoa T th nht ca bin khng vit hoa. Cc t cn li vit hoa v vit lin vi nhau. V d: typeNode hoc valueNode Dng danh t hoc cm danh t t tn cho bin. Tn bin c tnh gi nh cao: V d: Trc y t tn cho mt bin th hin bin l gi tr ca Node: th t lun l Node trong khi loi gi tr ca node li t l type. Sau t li l valueNode v typeNode Khi to bin. Lun trnh vic dng bin global mt cch ti a c th Hu ht cc bin c khi to ngay sau khi khai bo so vi vic trc y thng kh t lm. V d: BinaryTree::node *root = NULL 2. K thut vit m chng trnh hiu qu. Version 1 vit lin mt mch khng c cch dng gia cc phn chnh. Nh khai bo bin. Phn vit hm. Hm main Gia cc hm cng khng c du cch phn bit. Version 2 c khong cch gia cc phn r rng. Nhng phn chung xp li cnh nhau nh cc contructor, setter,Gia cc chc nng c th c li nhng khong phn bin V d ____________________InitBinaryTree_____________ //tt c cc hm v khi to cy y _____________________DuyetTruoc________________ Hm duyt trc y . i vi khong cch gia cc t: V d: version 1 node *SearchNode(node *root,char *type,ValueNode *valueNode); node *SearchNode(node *root, char *type, ValueNode *valueNode);

C khong cch gia cc t sau du , hoc du ; Hoc l khi c logic && version 2 cha li thnh && c du cch gia 2 && d sa hoc d nhn ra sai cc du ) hoc ( mi khi c li. Hnh thnh thi quen vit: v d: a=a+b; vit thnh a = a + b; c du cch d nhn. Version 2: Lun du () khi c php logic i khi cng hi my mc. Vit cc biu thc v php ton theo ng ngha: Version 1 vit: if(!root){..} ->if(root != NULL)

II.

Hm , Chng trnh con 1. Vn rt gn thnh 1 hm: version 1 c kh nhiu on trng m hon ton c th to thnh 1 hm ring bit c th s dng
switch(*typeNode){ case 'i': cin>>(valueNode->dataInt); break; case 'o': cin>>(valueNode->op); break; default: break; } on ny c s dng li 3 ln trong hm Input. V 1 ln trong hm InitBinaryTree khi khi to root. ( lc u) -> i thnh 1 hm InputValueNode void BinaryTree::InputValueNode(char *typeNode, *valueNode){ switch(*typeNode){ case 'i': cin>>(valueNode->dataInt); break; case 'o': cin>>(valueNode->op); break; default: break; } } BinaryTree::ValueNode

Khi ch gi hm v truyn tham s.

2. Mt hm ch lm mt nhim v: Version 2 phn chia thnh nhiu hm hn. Mi hm ch thc hin 1 nhim v. V d hm nhp Input ch thc hin vic nhp sau c hm test kim tra gi tr nhp. Khng cho hm va kim tra va nhp. Vn ny l mt vn rt hay gip em rt nhiu chng trnh n gin, d sa v s dng li c cc hm . 3. Version 1 khi vit cc hm ko c mt li gii thch. Ch vit hm v ni qua v mc ch lm g. Khng ni r dl u vo. V u ra c th lm g. Khi vit nh th rt nhiu ln vit hm xong ri li cho thm mt nhim v khc vo hm , ri li thm. Cui cng nhim v ca hm li b y sang mt hng khc. Cho nn khi vit hm th s nu r mc ch ca hm . u ra v u vo tng ng vi thc hin mt nhim v c th. 4. Version 2 vit theo kiu top down, modun ha dn. Phn chia cc hm c th khng b trng code nh version 1. Khng vit t pht ( ch suy ngh trong u) ri vit nh version 1.

III.

Nhng im ci tin so vi version 1 1. S dng c++: Chng trnh version 1 s dng c vit. Cc d liu ca node khai bo bng struct. Version 2 vit bng c++ khai bo lp BinaryTree. Cc thuc tnh ca node u trong lp. 2. Vn thuc tnh. Version 1 khai bo node ch c gi tr kiu s nguyn khng c kiu char th hin node cng c th l ton t.( Khng ng vi yu cu ca bi. Version 2 vit li cc thuc tnh l kiu hp union c th cha c 2 kiu int l ton hng v char l ton t union { int dataInt; char op; }Node; 3. Vn quy Trong version 1 dng thut ton kh quy i vi tt c cc chc nng l duyt trc, sau , gia v c kim tra xem c phi l cy biu thc khng. Thut ton kh lng nhng v tng i l kh hiu. Nu ngi khc test th tng i l kh pht hin ra li v sa. Nhng n li nhanh nu lm nhiu node so vi kiu quy. Khai bo thm mt struct stack kh quy. Version 2 s dng quy nn khng c stack. Rt d hiu. Rt d test li. V d: Hm duyt trc:

void BinaryTree::DuyetTruoc(BinaryTree::node *root){ if(root!=NULL){ displayNode(root); DuyetTruoc(root->leftPointer); DuyetTruoc(root->rightPointer); } }//_end_DuyetTruoc. 4. Thut ton khi to cy: Version 1 s dng cho ngi dng nhp vo mt gi tr n. V chng trnh s t khi to mt cy c n nt. V cy l cy nh phn y . Khi phi s dng thm mt queue thc hin thut ton ny. Version 2 dng thut ton cho php ngi dng nhp vo tng node mt. Nh th s ng ca ngi dng hn. Nhng khng c ha ngi dng phi t v cy ra giy bit cy nh no c th nhp tip theo( Do visual c++ khnng c ha ca c++ ).

You might also like