TAILIEUCHUNG - Bài giảng Cấu trúc dữ liệu 1: Chương 4B - Huỳnh Cao Thế Cường

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. . | CẤU TRÚC DỮ LIỆU 1 Giảng viên phụ trách: HUỲNH CAO THẾ CƯỜNG Bộ môn Tin học email: hctcuong@ TRƯỜNG ĐẠI HỌC AN GIANG KHOA KỸ THUẬT- CÔNG NGHỆ - MÔI TRƯỜNG CÂY NHỊ PHÂN (BINARY TREES) Định nghĩa 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 một nút con gọi là nút con phải. Ta qui ước vẽ nút con trái bên trái nút cha và nút con phải bên phải nút cha, mỗi nút con được nối với nút cha của nó bởi một đoạn thẳng. Cây nhị phân Cây nhị phân Cây nhị phân Duyệt cây nhị phân Duyệt tiền tự (Node-Left-Right): duyệt nút gốc, duyệt tiền tự con trái rồi duyệt tiền tự con phải. Duyệt trung tự (Left-Node-Right): duyệt trung tự con trái rồi đến nút gốc sau đó là duyệt trung tự con phải. Duyệt hậu tự (Left-Right-Node): duyệt hậu tự con trái rồi duyệt hậu tự con phải sau đó là nút gốc. Cây nhị phân Cài đặt cây nhị phân typedef TData; typedef struct Tnode { TData Data; //nhãn TNode* left TNode* right; }; typedef TNode* TTree; Cài đặt cây nhị phân Tạo cây rỗng : Cây rỗng là một cây là không chứa một nút nào cả. void MakeNullTree(TTree *T) { (*T)=NULL; } Kiểm tra cây rỗng int EmptyTree(TTree T) { return T==NULL; } Cài đặt cây nhị phân Xác định con trái của một nút TTree LeftChild(TTree n) { if (n!=NULL) return n->left; else return NULL; } Xác định con phải của một nút TTree RightChild(Ttree n) { if (n!=NULL) return n->right; else return NULL; } Cài đặt cây nhị phân Kiểm tra nút lá: Nếu nút là nút lá thì nó không có bất kỳ một con nào cả nên khi đó con trái và con phải của nó cùng bằng nil int IsLeaf(TTree n) { if(n!=NULL) return(LeftChild(n)==NULL) &&(RightChild(n)==NULL); else return NULL; } Cài đặt cây nhị phân Xác định số nút của cây int nb_nodes(TTree T) { if(EmptyTree(T)) return 0; else return 1 + nb_nodes(LeftChild(T)) + nb_nodes(RightChild(T)); } Cài đặt cây nhị phân Tạo cây mới từ hai cây có sẵn TTree Create2(Tdata v, TTree l, TTree r) { TTree N; N=(TNode*)malloc(sizeof(TNode)); N->Data=v; N->left=l; N->right=r; return N; } Cài đặt cây nhị phân Thủ tục duyệt tiền tự void PreOrder(TTree T) { printf("%c ",T->Data); if (LeftChild(T)!=NULL) PreOrder(LeftChild(T)); if (RightChild(T)!=NULL) PreOrder(RightChild(T)); } Cài đặt cây nhị phân Thủ tục duyệt trung tự void InOrder(TTree T) { if (LeftChild(T)=!NULL) InOrder(LeftChild(T)); printf("%c ",T->data); if (RightChild(T)!=NULL) InOrder(RightChild(T)); } Cài đặt cây nhị phân Thủ tục duyệt hậu tự void PosOrder(TTree T) { if (LeftChild(T)!=NULL) PosOrder(LeftChild(T)); if (RightChild(T)!=NULL) PosOrder(RightChild(T)); printf("%c ",T->data); } Cảm ơn !

TỪ KHÓA LIÊN QUAN
TAILIEUCHUNG - Chia sẻ tài liệu không giới hạn
Địa chỉ : 444 Hoang Hoa Tham, Hanoi, Viet Nam
Website : tailieuchung.com
Email : tailieuchung20@gmail.com
Tailieuchung.com là thư viện tài liệu trực tuyến, nơi chia sẽ trao đổi hàng triệu tài liệu như luận văn đồ án, sách, giáo trình, đề thi.
Chúng tôi không chịu trách nhiệm liên quan đến các vấn đề bản quyền nội dung tài liệu được thành viên tự nguyện đăng tải lên, nếu phát hiện thấy tài liệu xấu hoặc tài liệu có bản quyền xin hãy email cho chúng tôi.
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.