/** * File: print_util.dart * Created Time: 2023-01-23 * Author: Jefferson (JeffersonHuang77@gmail.com) */ import 'dart:io'; import 'list_node.dart'; import 'tree_node.dart'; class Trunk { Trunk? prev; String str; Trunk(this.prev, this.str); } void printMatrix(List> matrix) { print("["); for (List row in matrix) { print(" $row,"); } print("]"); } void printLinkedList(ListNode? head) { List list = []; while (head != null) { list.add('${head.val}'); head = head.next; } print(list.join(' -> ')); } void printTree(TreeNode? root, [Trunk? prev = null, bool isLeft = false]) { if (root == null) { return; } String prev_str = ' '; Trunk trunk = Trunk(prev, prev_str); printTree(root.right, trunk, true); if (prev == null) { trunk.str = '———'; } else if (isLeft) { trunk.str = '/———'; prev_str = ' |'; } else { trunk.str = '\\———'; prev.str = prev_str; } showTrunks(trunk); print(' ${root.val}'); if (prev != null) { prev.str = prev_str; } trunk.str = ' |'; printTree(root.left, trunk, false); } void showTrunks(Trunk? p) { if (p == null) { return; } showTrunks(p.prev); stdout.write(p.str); } void printHeap(List heap) { print("堆的数组表示:$heap"); print("堆的树状表示:"); TreeNode? root = listToTree(heap); printTree(root); }