mirror of
				https://github.com/krahets/hello-algo.git
				synced 2025-11-01 03:24:24 +08:00 
			
		
		
		
	 954c45864b
			
		
	
	954c45864b
	
	
	
		
			
			* docs: add Japanese documents (`ja/docs`) * docs: add Japanese documents (`ja/codes`) * docs: add Japanese documents * Remove pythontutor blocks in ja/ * Add an empty at the end of each markdown file. * Add the missing figures (use the English version temporarily). * Add index.md for Japanese version. * Add index.html for Japanese version. * Add missing index.assets * Fix backtracking_algorithm.md for Japanese version. * Add avatar_eltociear.jpg. Fix image links on the Japanese landing page. * Add the Japanese banner. --------- Co-authored-by: krahets <krahets@163.com>
		
			
				
	
	
		
			116 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| /**
 | |
|  * File: PrintUtil.java
 | |
|  * Created Time: 2022-11-25
 | |
|  * Author: krahets (krahets@163.com)
 | |
|  */
 | |
| 
 | |
| package utils;
 | |
| 
 | |
| import java.util.*;
 | |
| 
 | |
| class Trunk {
 | |
|     Trunk prev;
 | |
|     String str;
 | |
| 
 | |
|     Trunk(Trunk prev, String str) {
 | |
|         this.prev = prev;
 | |
|         this.str = str;
 | |
|     }
 | |
| };
 | |
| 
 | |
| public class PrintUtil {
 | |
|     /* 行列を印刷 (配列) */
 | |
|     public static <T> void printMatrix(T[][] matrix) {
 | |
|         System.out.println("[");
 | |
|         for (T[] row : matrix) {
 | |
|             System.out.println("  " + row + ",");
 | |
|         }
 | |
|         System.out.println("]");
 | |
|     }
 | |
| 
 | |
|     /* 行列を印刷 (リスト) */
 | |
|     public static <T> void printMatrix(List<List<T>> matrix) {
 | |
|         System.out.println("[");
 | |
|         for (List<T> row : matrix) {
 | |
|             System.out.println("  " + row + ",");
 | |
|         }
 | |
|         System.out.println("]");
 | |
|     }
 | |
| 
 | |
|     /* 連結リストを印刷 */
 | |
|     public static void printLinkedList(ListNode head) {
 | |
|         List<String> list = new ArrayList<>();
 | |
|         while (head != null) {
 | |
|             list.add(String.valueOf(head.val));
 | |
|             head = head.next;
 | |
|         }
 | |
|         System.out.println(String.join(" -> ", list));
 | |
|     }
 | |
| 
 | |
|     /* 二分木を印刷 */
 | |
|     public static void printTree(TreeNode root) {
 | |
|         printTree(root, null, false);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 二分木を印刷
 | |
|      * この木プリンターはTECHIE DELIGHTから借用
 | |
|      * https://www.techiedelight.com/c-program-print-binary-tree/
 | |
|      */
 | |
|     public static void printTree(TreeNode root, Trunk prev, boolean isRight) {
 | |
|         if (root == null) {
 | |
|             return;
 | |
|         }
 | |
| 
 | |
|         String prev_str = "    ";
 | |
|         Trunk trunk = new Trunk(prev, prev_str);
 | |
| 
 | |
|         printTree(root.right, trunk, true);
 | |
| 
 | |
|         if (prev == null) {
 | |
|             trunk.str = "———";
 | |
|         } else if (isRight) {
 | |
|             trunk.str = "/———";
 | |
|             prev_str = "   |";
 | |
|         } else {
 | |
|             trunk.str = "\\———";
 | |
|             prev.str = prev_str;
 | |
|         }
 | |
| 
 | |
|         showTrunks(trunk);
 | |
|         System.out.println(" " + root.val);
 | |
| 
 | |
|         if (prev != null) {
 | |
|             prev.str = prev_str;
 | |
|         }
 | |
|         trunk.str = "   |";
 | |
| 
 | |
|         printTree(root.left, trunk, false);
 | |
|     }
 | |
| 
 | |
|     public static void showTrunks(Trunk p) {
 | |
|         if (p == null) {
 | |
|             return;
 | |
|         }
 | |
| 
 | |
|         showTrunks(p.prev);
 | |
|         System.out.print(p.str);
 | |
|     }
 | |
| 
 | |
|     /* ハッシュテーブルを印刷 */
 | |
|     public static <K, V> void printHashMap(Map<K, V> map) {
 | |
|         for (Map.Entry<K, V> kv : map.entrySet()) {
 | |
|             System.out.println(kv.getKey() + " -> " + kv.getValue());
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /* ヒープを印刷 (優先度キュー) */
 | |
|     public static void printHeap(Queue<Integer> queue) {
 | |
|         List<Integer> list = new ArrayList<>(queue);
 | |
|         System.out.print("ヒープの配列表現:");
 | |
|         System.out.println(list);
 | |
|         System.out.println("ヒープの木表現:");
 | |
|         TreeNode root = TreeNode.listToTree(list);
 | |
|         printTree(root);
 | |
|     }
 | |
| } |