Có một số thuật toán để hiển thị cấu trúc dữ liệu cây không? Tôi đã thử googling, nhưng couldnt tìm thấy bất kỳ. Tôi khá chắc chắn phải có một số thuật toán cho điều này không phải là nhiệm vụ đơn giản. Hoặc bất cứ ai có một số ý tưởng?Thuật toán hình ảnh hóa cây
Trả lời
Giả sử: bạn muốn mỗi nút được hiển thị sao cho nút đó được đặt ở giữa các nút con của nó. Để đạt được điều này, tính toán chiều rộng của mỗi nút, mà tôi xác định là số lượng không gian ngang cần thiết để hiển thị toàn bộ cây con của nút này, sao cho nó không trùng lặp với các nhánh phụ của anh chị em trái hoặc phải của nó.
Điều này dẫn đến:
width = 1 + sum(widths of children's nodes)
Vì vậy, làm một traversal sâu-đầu tiên thông qua cây để tính chiều rộng của mỗi nút. Để hiển thị, hãy thực hiện giao thoa lần đầu tiên để vẽ mức cây theo cấp độ.
Đây là ý tưởng sơ bộ về cách thực hiện. Bạn có thể muốn tinh chỉnh tính toán chiều rộng tùy thuộc vào chi tiết về cách bạn muốn hiển thị cây.
Bạn có thể sử dụng ngôn ngữ DOT với graphviz chẳng hạn.
Tree-mapping có lẽ là những gì bạn đang tìm kiếm. Graphviz là tốt cho hình dung các cấu trúc đồ thị không chuyên cho cấu trúc cây. Tôi không thể tìm thấy nó một lần nữa nhưng tôi nhớ đã đọc trong một bài báo khoa học rằng cây treemaps (tôi nghĩ voronoi) là tối ưu để đại diện cho cấu trúc cây, liên quan đến nơi chúng tiêu thụ và khu vực có thể được sử dụng để đại diện cho một số đơn vị (như kích thước byte cho thí dụ).
Here là một số lựa chọn thay thế.
Here là danh sách các bài viết hay và thông tin khác về chủ đề.
Bạn cũng có thể in cây từ trái sang phải, tức là gốc ở bên trái, cấp độ đầu tiên bên phải, v.v. Bạn sẽ tìm thấy cây được in với mỗi cấp trên 'cột' riêng của nó. Thuật toán có phần như sau:
print(node, spaces):
if node has left child:
print(left_child, spaces + ' ')
print spaces + node + '\n'
if node has right child:
print(right_child, spaces + ' ')
Thuật toán này sẽ in một nút cây trên mỗi dòng. Mỗi cấp độ của cây sẽ được thụt vào bên phải bởi một số không gian. Thuật toán này sẽ in các mục theo thứ tự tăng dần, nhưng thứ tự giảm dần có thể đạt được bằng cách xử lý đúng con đầu tiên.
- 1. Thuật toán phân chia và đồng hóa cho cây
- 2. Giải thuật cây/Thuật toán đệ quy
- 3. thuật toán để so sánh hình ảnh
- 4. Thuật toán truyền tải cây Javascript
- 5. Thuật toán để giảm hình ảnh thành hình chữ nhật?
- 6. Thuật toán để tìm hình vuông trong hình ảnh?
- 7. Thuật toán chèn cây nhị phân
- 8. Thuật toán đồng bộ hóa
- 9. Thuật toán mã hóa mới?
- 10. Thuật toán thay đổi kích thước hình ảnh
- 11. Thuật toán để so sánh hai hình ảnh
- 12. Tài nguyên cho thuật toán biến dạng hình ảnh
- 13. Logic/thuật toán màu hình ảnh tốt hơn
- 14. Thuật toán phát hiện hình ảnh trùng lặp?
- 15. Thuật toán chung cho hình ảnh vector rastering
- 16. Thuật toán băm hình ảnh nhanh và đơn giản
- 17. Thuật toán để tạo hình ảnh bán sắc?
- 18. Thuật toán để tìm hình ảnh tương tự
- 19. Hiểu thuật toán của Ukkonen cho hậu tố cây
- 20. Có thuật toán nào để chuyển đổi biểu đồ Hình ảnh thành hình ảnh gốc không?
- 21. Thuật toán để phát hiện hướng ảnh
- 22. Có cấu trúc cây hoặc thuật toán để trộn các cấp trong cây không?
- 23. Thuật toán mã hóa khóa đối xứng
- 24. Thiết kế Thuật toán Mã hóa Tricky
- 25. Xác định thuật toán mã hóa GSM
- 26. Android - Thuật toán mã hóa Polyline?
- 27. Thuật toán mã hóa đơn giản
- 28. Tìm C++ thực hiện thuật toán cây khoảng thời gian
- 29. Thuật toán để tìm đối xứng của cây
- 30. Thuật toán cây bao trùm tối thiểu song song
Bạn đang tìm kiếm thứ gì đó như Graphviz? http://www.graphviz.org/ –
Bạn có chắc chắn bạn đang tìm kiếm một thuật toán hoặc một dịch vụ hiển thị nó cho bạn? – Duniyadnd
Tôi phải hình dung cây trong dự án của mình vì vậy tôi cần thuật toán. – MrProper