treeNode* newNode(int dữ liệu); Show int countNodesOfList(listNode *head); treeNode* sortedListToBTrecur(listNode **head_ref, int n); /* Hàm này đếm số lượng các nút trong Danh sách được liên kết và sau đó gọi */ treeNode* sortedListToBST(listNode *head) /*Đếm số nút trong Linked List */ int n = countNodesOfList(đầu); trả về sortedListToBTrecur(&head, n); /* Hàm chính xây dựng cân bằng BT và trả về gốc của nó head_ref --> Con trỏ tới con trỏ tới nút đầu danh sách liên kết n -> Không của các nút trong Danh sách liên kết */ treeNode* sortedListToBTrecur(listNode **head_ref, int n) /* Xây dựng đệ quy cây con bên trái */ treeNode *left = sortedListToBTrecur(head_ref, n/2); /* Cấp phát bộ nhớ cho root, và liên kết bên trái được xây dựng ở trên treeNode *root = newNode((*head_ref)->data); /* Thay đổi con trỏ đầu danh sách liên kết cho các cuộc gọi đệ quy cha */ *head_ref = (*head_ref)->tiếp theo; /* Xây dựng đệ quy bên phải cây con và liên kết nó với gốc Số nút trong cây con bên phải là tổng số nút - số nút trong cây con bên trái - 1 (đối với gốc) là n-n/2-1*/ root->right = sortedListToBTrecur(head_ref, n - n / 2 - 1); /* Một hàm tiện ích trả về số nút trong Danh sách được liên kết đã cho */ int countNodesOfList(listNode *head) /* Hàm chèn một nút ở đầu danh sách liên kết */ void push(listNode** head_ref, int new_data) listNode* new_node = new listNode(); new_node->data = new_data; /* liên kết danh sách cũ với nút mới */ new_node->next = (*head_ref); /* di chuyển đầu để trỏ đến nút mới */ /* Hàm in các nút trong danh sách liên kết cho trước */ void printList(listNode *node) /* Hàm trợ giúp phân bổ một nút mới với dữ liệu đã cho và NULL con trỏ trái và phải. */ treeNode* newNode(dữ liệu int) nút treeNode* = new treeNode(); in lượt đặt hàng trước của BT */ void preOrder(nút treeNode*) /* Bắt đầu với danh sách rỗng */ /* Hãy tạo một danh sách liên kết được sắp xếp để kiểm tra các chức năng Danh sách liên kết được tạo sẽ là 1->2->3->4->5->6->7 */ cout<<"Danh sách liên kết ban đầu là. “; treeNode *root = sortedListToBST(head); cout<<"\nChuyển BT từ Gốc đến Lá. “; // trộn (hợp nhất) hai danh sách liên kết được sắp xếp BinaryTreeNode* concatenate_lists( // sử dụng left cho trước đó BinaryTreeNode* tail1 = head1->left; BinaryTreeNode* tail2 = head2 -> left; BinaryTreeNode* convert_to_linked_list( BinaryTreeNode* list1 = convert_to_linked_list(root->left); BinaryTreeNode* list2 = convert_to_linked_list(root->right); gốc->trái = gốc->phải = gốc; BinaryTreeNode* result = concatenate_lists(list1, root); kết quả = concatenate_lists(kết quả, danh sách2); vectorget_vector(BinaryTreeNode* đầu) { BinaryTreeNode* temp = đầu; vectororig_data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; BinaryTreeNode* root = create_BST(orig_data); vectorall_data = binary_tree_to_vector(root); BinaryTreeNode* head = convert_to_linked_list(root); vectorv = get_vector(đầu); khẳng định (is_equal (v, all_data)); Điều này có thể đạt được bằng cách duyệt cây theo thứ tự, trái nút con -> gốc -> nút phải. Duyệt cây con bên trái và chuyển nó thành danh sách liên kết kép bằng cách thêm các nút vào cuối danh sách. Theo cách này, nút ngoài cùng bên trái sẽ trở thành đầu danh sách. Sau đó, chuyển cây con bên phải thành danh sách liên kết kép Dylan_T_Rabbit Bài đăng. 2 Chủ đề. 1 Đã tham gia. Tháng 7 năm 2017 Danh tiếng. 0 12-07-2017, 10. 48 giờ sángTôi có một cấu trúc cây mà tôi cần chuyển đổi thành danh sách các danh sách.
[ [(-1,-1), (0,3), (0,4), (0,5)] [(-1,-1), (0,3), (0,4), (3,8)] [(-1,-1), (0,3), (0,4), (4,9)] [(-1,-1), (0,3), (3,7), (0,5)] [(-1,-1), (0,3), (3,7), (7,12)] ] I have the following function so far: def tree2list(self): if len(self._children) == 0: return [self._data] else: node_list = [[self._data] + child.tree2list() for child in self._children] return node_listWhich outputs: Reformatted for clarity:[inline][ [(-1, -1), [(0, 3), [(0, 4), (0, 5)], [(0, 4), (3, 8)], [(0, 4), (4, 9)] ], [(0, 3), [(3, 7), (0, 5)], [(3, 7), (7, 12)] ] ] ][/inline] How can I get my 'tree2list' function to output the desired list of lists? Thanks for any help Dylan Hồi đáp Tìm thấy Hồi đáp ichabod801 Bài đăng. 4.231 Chủ đề. 97 Đã tham gia. Tháng 9 năm 2016 Danh tiếng. 273 Jul-12-2017, 01. 43 giờ chiềuBạn cần truyền dữ liệu xuống đệ quy và sử dụng nó ở cuối. Một cái gì đó như thế này. Craig "Ichabod" O'Brien - xenomind. com Hồi đáp Trang web Tìm Hồi đáp Làm cách nào để chuyển cây nhị phân thành danh sách liên kết?Cho một cây nhị phân, làm phẳng nó thành danh sách liên kết tại chỗ. Không được phép sử dụng cấu trúc dữ liệu phụ trợ. Sau khi làm phẳng, bên trái của mỗi nút sẽ trỏ đến NULL và bên phải sẽ chứa nút tiếp theo theo thứ tự trước. Cách tiếp cận đơn giản. Một giải pháp đơn giản là sử dụng Truyền tải thứ tự cấp bằng hàng đợi .
Làm cách nào để chuyển đổi danh sách thành cây nhị phân trong Python?Để giải quyết vấn đề này, chúng ta sẽ làm theo các bước sau. . Nếu A trống, thì trả về Null tìm phần tử ở giữa và root nó Chia mảng thành hai mảng con, phần bên trái của phần tử giữa và phần bên phải của phần tử giữa thực hiện đệ quy cùng một tác vụ cho phân đoạn bên trái và phân đoạn bên phải Làm cách nào để tạo cây tìm kiếm nhị phân từ danh sách các số trong Python?Đầu tiên, chọn phần tử đầu tiên của mảng và root nó. Chọn phần tử thứ hai, nếu giá trị của nó nhỏ hơn giá trị nút gốc thì đặt nó là con trái, ngược lại thì đặt nó là con phải. Bây giờ gọi đệ quy bước (2) và bước (3) để tạo BST từ Trình duyệt đơn hàng cấp độ của nó
Làm cách nào để chuyển đổi cây thành danh sách trong Java?Điều này có thể đạt được bằng cách duyệt cây theo thứ tự, đó là trái nút con -> nút gốc -> nút bên phải. Duyệt qua cây con bên trái và chuyển đổi nó thành danh sách liên kết kép bằng cách thêm các nút vào cuối danh sách . Bằng cách này, nút ngoài cùng bên trái sẽ trở thành đầu danh sách. |