• leetcode二叉树相关模板


    1. import java.util.*;
    2. public class Main {
    3. public static void main(String[] args) {
    4. //Integer[] arr = {3, 9, 20, null, null, 15, 7};
    5. Integer[] arr = {1,2,3,4,null,5,null,null,null,null,null,null,6};
    6. TreeNode tree = createTree(arr, 0);
    7. System.out.println("层次:");
    8. printLevelOrder(tree);
    9. System.out.println();
    10. System.out.println("前序:");
    11. printPreOrder(tree);
    12. System.out.println();
    13. System.out.println("中序:");
    14. printMidOrder(tree);
    15. System.out.println();
    16. System.out.println("后序:");
    17. printAfterOrder(tree);
    18. System.out.println();
    19. }
    20. /**
    21. * 创建一个二叉树(通过层次法)
    22. * Integer[] arr = {1,2,3,4,null,5,null,null,null,null,null,null,6};
    23. * ---------1
    24. * ----2 3
    25. * -4 5
    26. * -------------6
    27. */
    28. public static TreeNode createTree(Integer[] array, int index) {
    29. TreeNode root = null;
    30. if (index < array.length) {
    31. Integer value = array[index];
    32. if (value == null) {
    33. return null;
    34. }
    35. root = new TreeNode(value);
    36. root.left = createTree(array, 2 * index + 1);
    37. root.right = createTree(array, 2 * index + 2);
    38. }
    39. return root;
    40. }
    41. /**
    42. * 层次遍历
    43. */
    44. public static void printLevelOrder(TreeNode root) {
    45. Queue queue = new ArrayDeque<>();
    46. queue.add(root);
    47. while (!queue.isEmpty()) {
    48. int size = queue.size();
    49. for(int i = 0; i < size; i++) {
    50. // 出队
    51. TreeNode node = queue.poll();
    52. System.out.print(node.val == null ? "" : node.val + " ");
    53. if (node.left != null) {
    54. queue.add(node.left);
    55. }
    56. if (node.right != null) {
    57. queue.add(node.right);
    58. }
    59. }
    60. System.out.println();
    61. }
    62. }
    63. /**
    64. * 前序遍历
    65. */
    66. public static void printPreOrder(TreeNode tree) {
    67. if (tree != null) {
    68. System.out.print(tree.val == null ? "" : tree.val + " ");
    69. printPreOrder(tree.left);
    70. printPreOrder(tree.right);
    71. }
    72. }
    73. /**
    74. * 中序遍历
    75. */
    76. public static void printMidOrder(TreeNode tree) {
    77. if (tree != null) {
    78. printMidOrder(tree.left);
    79. System.out.print(tree.val == null ? "" : tree.val + " ");
    80. printMidOrder(tree.right);
    81. }
    82. }
    83. /**
    84. * 后序遍历
    85. */
    86. public static void printAfterOrder(TreeNode tree) {
    87. if (tree != null) {
    88. printAfterOrder(tree.left);
    89. printAfterOrder(tree.right);
    90. System.out.print(tree.val == null ? "" : tree.val + " ");
    91. }
    92. }
    93. }
    94. class TreeNode {
    95. Integer val;
    96. TreeNode left;
    97. TreeNode right;
    98. TreeNode() {
    99. }
    100. TreeNode(Integer val) {
    101. this.val = val;
    102. }
    103. TreeNode(int val, TreeNode left, TreeNode right) {
    104. this.val = val;
    105. this.left = left;
    106. this.right = right;
    107. }
    108. }

  • 相关阅读:
    美国想通过法案建立加密世界的新SWIFT
    史上最全的15个苹果手机输入法使用技巧,不看后悔三年
    websocket链接断开服务器报错java.io.EOFException解决办法
    【视觉算法系列1】使用 KerasCV YOLOv8 进行红绿灯检测(上)
    C++练习题。。。
    【MySQL基础】MySQL常用的图形化管理工具有那些?
    架构核心技术之分布式消息队列
    Anaconda虚拟环境配置Python库与Spyder编译器
    电力系统机组组合优化调度(IEEE14节点、IEEE30节点、IEEE118节点)(Matlab代码实现)
    数据结构之哈希表
  • 原文地址:https://blog.csdn.net/Pastthewind/article/details/134068419