Bài giảng Cấu trúc dữ liệu 1: Chương 4B - Huỳnh Cao Thế Cường
Số trang: 16
Loại file: ppt
Dung lượng: 287.50 KB
Lượt xem: 1
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Cây nhị phân là cây rỗng hoặc là cây mà mỗi nút có tối đa hai nút con. Các nút con của cây được phân biệt thứ tự rõ ràng, một nút con gọi là nút con trái và một nút con gọi là nút con phải. Trong chương này sẽ cung cấp cho người học những kiến thức về cây nhị phân (binary trees) và cách cài đặt cây nhị phân. Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu 1: Chương 4B - Huỳnh Cao Thế Cường TRƯỜNGĐẠIHỌCANGIANGKHOAKỸTHUẬTCÔNGNGHỆMÔITRƯỜNG CẤUTRÚCDỮLIỆU1 Giảngviênphụtrách: HUỲNHCAOTHẾCƯỜNG BộmônTinhọc email:hctcuong@agu.edu.vn 1 1 CÂY NHỊ PHÂN (BINARY TREES)Địnhnghĩa Câynhịphânlàcâyrỗnghoặclàcâymàmỗinútcótối đahainútcon. Cácnútconcủacâyđượcphânbiệtthứtựrõràng • mộtnútcongọilànútcontrái • mộtnútcongọilànútconphải. • Taquiướcvẽnútcontráibêntráinútchavànútcon phảibênphảinútcha,mỗinútconđượcnốivớinút chacủanóbởimộtđoạnthẳng. 2Cây nhị phân 3Cây nhị phân 4 Cây nhị phân Duyệtcâynhịphân Duyệttiềntự(NodeLeftRight):duyệtnútgốc,duyệt tiềntựcontráirồiduyệttiềntựconphải. Duyệttrungtự(LeftNodeRight):duyệttrungtựcon tráirồiđếnnútgốcsauđólàduyệttrungtựconphải. Duyệthậutự(LeftRightNode):duyệthậutựcontrái rồiduyệthậutựconphảisauđólànútgốc. 5Cây nhị phân 6 Cài đặt cây nhị phântypedef…TData;typedefstructTnode{ TDataData;//nhãn TNode*left TNode*right;};typedefTNode*TTree; 7 Cài đặt cây nhị phân Tạocâyrỗng:Câyrỗnglàmộtcâylàkhôngchứa mộtnútnàocả. voidMakeNullTree(TTree*T) { (*T)=NULL; } Kiểmtracâyrỗng intEmptyTree(TTreeT) { returnT==NULL; } 8 Cài đặt cây nhị phânXácđịnhcontráicủamộtnút TTreeLeftChild(TTreen) { if(n!=NULL)returnn>left; elsereturnNULL; }Xácđịnhconphảicủamộtnút TTreeRightChild(Ttreen) { if(n!=NULL)returnn>right; elsereturnNULL; } 9 Cài đặt cây nhị phânKiểmtranútlá: Nếunútlànútláthìnókhôngcóbấtkỳmộtconnàocả nênkhiđócontráivàconphảicủanócùngbằngnil intIsLeaf(TTreen) { if(n!=NULL) return(LeftChild(n)==NULL) &&(RightChild(n)==NULL); elsereturnNULL; } 10 Cài đặt cây nhị phânXácđịnhsốnútcủacây intnb_nodes(TTreeT) { if(EmptyTree(T)) return0; else return1+nb_nodes(LeftChild(T)) +nb_nodes(RightChild(T)); } 11 Cài đặt cây nhị phânTạocâymớitừhaicâycósẵnTTreeCreate2(Tdatav,TTreel,TTreer){ TTreeN; N=(TNode*)malloc(sizeof(TNode)); N>Data=v; N>left=l; N>right=r; returnN;} 12 Cài đặt cây nhị phânThủtụcduyệttiềntựvoidPreOrder(TTreeT) { printf(%c,T>Data); if(LeftChild(T)!=NULL) PreOrder(LeftChild(T)); if(RightChild(T)!=NULL) PreOrder(RightChild(T)); } 13 Cài đặt cây nhị phânThủtụcduyệttrungtựvoidInOrder(TTreeT){ if(LeftChild(T)=!NULL) InOrder(LeftChild(T)); printf(%c,T>data); if(RightChild(T)!=NULL) InOrder(RightChild(T));} 14 Cài đặt cây nhị phânThủtụcduyệthậutựvoidPosOrder(TTreeT){ if(LeftChild(T)!=NULL) PosOrder(LeftChild(T)); if(RightChild(T)!=NULL) PosOrder(RightChild(T)); printf(%c,T>data);} 15
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu 1: Chương 4B - Huỳnh Cao Thế Cường TRƯỜNGĐẠIHỌCANGIANGKHOAKỸTHUẬTCÔNGNGHỆMÔITRƯỜNG CẤUTRÚCDỮLIỆU1 Giảngviênphụtrách: HUỲNHCAOTHẾCƯỜNG BộmônTinhọc email:hctcuong@agu.edu.vn 1 1 CÂY NHỊ PHÂN (BINARY TREES)Địnhnghĩa Câynhịphânlàcâyrỗnghoặclàcâymàmỗinútcótối đahainútcon. Cácnútconcủacâyđượcphânbiệtthứtựrõràng • mộtnútcongọilànútcontrái • mộtnútcongọilànútconphải. • Taquiướcvẽnútcontráibêntráinútchavànútcon phảibênphảinútcha,mỗinútconđượcnốivớinút chacủanóbởimộtđoạnthẳng. 2Cây nhị phân 3Cây nhị phân 4 Cây nhị phân Duyệtcâynhịphân Duyệttiềntự(NodeLeftRight):duyệtnútgốc,duyệt tiềntựcontráirồiduyệttiềntựconphải. Duyệttrungtự(LeftNodeRight):duyệttrungtựcon tráirồiđếnnútgốcsauđólàduyệttrungtựconphải. Duyệthậutự(LeftRightNode):duyệthậutựcontrái rồiduyệthậutựconphảisauđólànútgốc. 5Cây nhị phân 6 Cài đặt cây nhị phântypedef…TData;typedefstructTnode{ TDataData;//nhãn TNode*left TNode*right;};typedefTNode*TTree; 7 Cài đặt cây nhị phân Tạocâyrỗng:Câyrỗnglàmộtcâylàkhôngchứa mộtnútnàocả. voidMakeNullTree(TTree*T) { (*T)=NULL; } Kiểmtracâyrỗng intEmptyTree(TTreeT) { returnT==NULL; } 8 Cài đặt cây nhị phânXácđịnhcontráicủamộtnút TTreeLeftChild(TTreen) { if(n!=NULL)returnn>left; elsereturnNULL; }Xácđịnhconphảicủamộtnút TTreeRightChild(Ttreen) { if(n!=NULL)returnn>right; elsereturnNULL; } 9 Cài đặt cây nhị phânKiểmtranútlá: Nếunútlànútláthìnókhôngcóbấtkỳmộtconnàocả nênkhiđócontráivàconphảicủanócùngbằngnil intIsLeaf(TTreen) { if(n!=NULL) return(LeftChild(n)==NULL) &&(RightChild(n)==NULL); elsereturnNULL; } 10 Cài đặt cây nhị phânXácđịnhsốnútcủacây intnb_nodes(TTreeT) { if(EmptyTree(T)) return0; else return1+nb_nodes(LeftChild(T)) +nb_nodes(RightChild(T)); } 11 Cài đặt cây nhị phânTạocâymớitừhaicâycósẵnTTreeCreate2(Tdatav,TTreel,TTreer){ TTreeN; N=(TNode*)malloc(sizeof(TNode)); N>Data=v; N>left=l; N>right=r; returnN;} 12 Cài đặt cây nhị phânThủtụcduyệttiềntựvoidPreOrder(TTreeT) { printf(%c,T>Data); if(LeftChild(T)!=NULL) PreOrder(LeftChild(T)); if(RightChild(T)!=NULL) PreOrder(RightChild(T)); } 13 Cài đặt cây nhị phânThủtụcduyệttrungtựvoidInOrder(TTreeT){ if(LeftChild(T)=!NULL) InOrder(LeftChild(T)); printf(%c,T>data); if(RightChild(T)!=NULL) InOrder(RightChild(T));} 14 Cài đặt cây nhị phânThủtụcduyệthậutựvoidPosOrder(TTreeT){ if(LeftChild(T)!=NULL) PosOrder(LeftChild(T)); if(RightChild(T)!=NULL) PosOrder(RightChild(T)); printf(%c,T>data);} 15
Tìm kiếm theo từ khóa liên quan:
Cấu trúc dữ liệu Bài giảng Cấu trúc dữ liệu Giải thuật Cơ sở dữ liệu Cấu trúc cây Cây nhị phânGợi ý tài liệu liên quan:
-
62 trang 401 3 0
-
Đề thi kết thúc học phần học kì 2 môn Cơ sở dữ liệu năm 2019-2020 có đáp án - Trường ĐH Đồng Tháp
5 trang 376 6 0 -
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 312 0 0 -
Giáo trình Cơ sở dữ liệu: Phần 2 - TS. Nguyễn Hoàng Sơn
158 trang 288 0 0 -
13 trang 288 0 0
-
Phân tích thiết kế hệ thống - Biểu đồ trạng thái
20 trang 282 0 0 -
Tài liệu học tập Tin học văn phòng: Phần 2 - Vũ Thu Uyên
85 trang 254 1 0 -
Đề cương chi tiết học phần Quản trị cơ sở dữ liệu (Database Management Systems - DBMS)
14 trang 243 0 0 -
8 trang 186 0 0
-
Giáo trình về dữ liệu và các mô hình cơ sở dữ liệu
62 trang 181 0 0