设计一个打印整棵树的打印函数

简介: 设计一个打印整棵树的打印函数

通过本题可以更好的理解二叉树的递归以及二叉树的设计及实现

package com.harrison.class07;
public class Code06_PrintBinaryTree {
  public static class Node {
    public int value;
    public Node left;
    public Node right;
    public Node(int data) {
      this.value = data;
    }
  }
  public static void printTree(Node head) {
    System.out.println("Binary Tree:");
    printInOrder(head, 0, "H", 17);
    System.out.println();
  }
  public static void printInOrder(Node head, int height, String to, int len) {
    if (head == null) {
      return;
    }
    printInOrder(head.right, height + 1, "v", len);
    String val = to + head.value + to;
    int lenM = val.length();
    int lenR = (len - lenM) / 2;
    int lenL = len - lenM - lenR;
    val = getSpace(lenL) + val + getSpace(lenR);
    System.out.println(getSpace((height * len)) + val);
    printInOrder(head.left, height + 1, "^", len);
  }
  public static String getSpace(int num) {
    String space = " ";
    StringBuffer bf = new StringBuffer();
    for (int i = 0; i < num; i++) {
      bf.append(space);
    }
    return bf.toString();
  }
  public static void main(String[] args) {
    Node head = new Node(1);
    head.left = new Node(-222222222);
    head.right = new Node(3);
    head.left.left = new Node(Integer.MIN_VALUE);
    head.right.left = new Node(55555555);
    head.right.right = new Node(66);
    head.left.left.right = new Node(777);
    printTree(head);
    head = new Node(1);
    head.left = new Node(2);
    head.right = new Node(3);
    head.left.left = new Node(4);
    head.right.left = new Node(5);
    head.right.right = new Node(6);
    head.left.left.right = new Node(7);
    printTree(head);
    head = new Node(1);
    head.left = new Node(1);
    head.right = new Node(1);
    head.left.left = new Node(1);
    head.right.left = new Node(1);
    head.right.right = new Node(1);
    head.left.left.right = new Node(1);
    printTree(head);
  }
}

效果截图:image.png

相关文章
|
7月前
13.C语言:用printf函数输出数据
13.C语言:用printf函数输出数据
107 0
|
6月前
|
C语言
C语言---函数---请输入乘法口诀表的行,来打印几几乘法表
C语言---函数---请输入乘法口诀表的行,来打印几几乘法表
|
5月前
|
容器
打印
打印
56 0
|
7月前
|
C语言
深入理解C语言中的printf函数及数据输出
深入理解C语言中的printf函数及数据输出
462 0
|
7月前
|
存储 C语言
C语言用printf函数输出数据
C语言用printf函数输出数据
70 0
|
7月前
|
C语言
C语言中printf函数输出数据
C语言中printf函数输出数据
83 0
打印
4.6 打印 4.6.1 分页符的插入及删除 1、插入水平分页符 选定要插入分页符位置的下一行,在“页面布局”选项卡的“页面设置”组单击“分隔符”,在出现的下拉列表中选择”插入分页符”命令 2、插入垂直分页符 选定要插入分页符位置的右侧列,在“页面布局”选项卡的“页面设置”组单击“分隔符”,在出现的下拉列表中选择”插入分页符”命令。 3、同时插入水平、垂直分页符 选定某单元格,在“页面布局”选项卡的“页面设置”组单击“分隔符”,在出现的下拉列表中选择“插入分页符”命令此时会在该单元格左边框和上边框位置同时插入水平、垂直分页符。 4、删除手动分页符 先选择紧邻水平分页符的下面行 (或该行
|
存储 编译器 C语言
重定义/自定义printf到串口输出实现的三种方法(cubeide)
重定义/自定义printf到串口输出实现的三种方法(cubeide)
902 0
|
Java
用Java方法来打印从1到N的阶乘的和
用Java方法来打印从1到N的阶乘的和
178 0
用Java方法来打印从1到N的阶乘的和
|
开发者 Python
打印九九乘法表 | 学习笔记
快速学习打印九九乘法表
打印九九乘法表 | 学习笔记