Hướng dẫn n-ary tree implementation in c++ - triển khai cây n-ary trong c ++
Chỉ phân bổ bộ nhớ cho thành viên
Cấu trúc bạn đã xác định có nghĩa là bạn phải quản lý từng cấp độ như một mảng các nút có số lượng phần tử có khả năng động. Một cấu trúc phổ biến hơn được sử dụng cho biểu diễn cây n-ary trong C sẽ là:
Vì vậy, cấu trúc trông như thế này:
Sau đó, bạn cần phải sửa đổi Cây chung là một tập hợp các nút trong đó mỗi nút là cấu trúc dữ liệu bao gồm các bản ghi và danh sách các tài liệu tham khảo cho trẻ em của nó (không được phép tham khảo trùng lặp). Không giống như danh sách được liên kết, mỗi nút lưu trữ địa chỉ của nhiều nút. Mỗi địa chỉ lưu trữ nút của trẻ em và địa chỉ nút đầu tiên sẽ được lưu trữ trong một con trỏ riêng gọi là Root. Các cây chung là những cây n-ary có các thuộc tính sau: & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 1. Nhiều trẻ em ở mọi nút. & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 2. Số lượng nút cho mỗi nút không được biết trước. Example:
Để đại diện cho cây trên, chúng ta phải xem xét trường hợp xấu nhất, đó là nút có trẻ em tối đa (trong ví dụ trên, 6 trẻ em) và phân bổ nhiều gợi ý cho mỗi nút. Biểu diễn nút dựa trên phương pháp này có thể được viết là: & nbsp; C
0
3
6
9
2
5
8 9Nhược điểm của đại diện trên là: & nbsp;
Cách tiếp cận đơn giản: & nbsp; Để lưu trữ địa chỉ của trẻ em trong một nút, chúng tôi có thể sử dụng một mảng hoặc danh sách được liên kết. Nhưng chúng tôi sẽ phải đối mặt với một số vấn đề với cả hai.
Cách tiếp cận tốt hơn: Chúng ta có thể sử dụng các mảng động để lưu trữ địa chỉ của địa chỉ trẻ em. Chúng tôi có thể truy cập ngẫu nhiên bất kỳ địa chỉ trẻ con nào và kích thước của vectơ cũng không được sửa. C
0 2 6 9
6
9
2
8
Sự lãng phí bộ nhớ - Tất cả các con trỏ không bắt buộc trong tất cả các trường hợp. Do đó, có rất nhiều lãng phí bộ nhớ. C
0
3
6 9Advantages:
Nhược điểm của đại diện trên là: & nbsp; NCho một cây n-ary chứa, nhiệm vụ là in các đường truyền từ của cây ... Thăm một đứa trẻ đầu tiên .. Thăm một đứa trẻ thứ hai .. Thăm đứa con cuối cùng đệ quy .. In dữ liệu trong nút .. Thăm một đứa trẻ cuối cùng .. Lặp lại các bước trên cho đến khi tất cả các nút được truy cập .. Làm thế nào để bạn làm một cây ary?Cách tiếp cận hiệu quả: Ở đứa con đầu lòng/anh chị em tiếp theo, các bước được thực hiện là: tại mỗi nút liên kết các con của cùng một phụ huynh (anh chị em) từ trái sang phải. Chuyển các liên kết từ cha mẹ đến tất cả con ngoại trừ đứa con đầu lòng.At each node-link the children of the same parent(siblings) from left to right. Remove the links from parent to all children except the first child.
Hoàn thành nMột cây n-ary hoàn chỉnh là một cây trong đó mỗi nút có n con hoặc không có con.a tree in which each node has n children or no children.
N trong cấu trúc dữ liệu cây là gì?Giới thiệu.Cây n-ary là các cấu trúc dữ liệu cây cho phép chúng ta có tới N trẻ em cho mỗi nút, khác với các cây nhị phân tiêu chuẩn chỉ cho phép tối đa 2 nút trẻ em cho mỗi nút.Hình trên cho thấy một ví dụ về một cây n-ary.up to n children nodes for each of the nodes, differing from the standard binary trees which allow only up to 2 children nodes for each node. The above picture shows an example of an n-ary tree. |
struct node {
char *word;
int depth, children; // Reconsider if you need these
// for maintenance effort versus benefit
struct node *child; // point to children of this node
struct node *next; // point to next node at same level
};