满二叉树的输出(分割法)

Posted KevinBear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了满二叉树的输出(分割法)相关的知识,希望对你有一定的参考价值。

代码

import java.util.Arrays;

public class TreeShape {

    static int N=6;//输出多少行
    static int max= maxLen();//单个字符长度

    public static void main(String[] args) {
        满二叉树图();
    }

    private static void 满二叉树图() {
        int n = 0;
        for (int i = 0; i < N; i++) {
            int t = (int) Math.pow(2,i);
            ___();
            for (int j = 0; j < t; j++) {
                分割输入(t*2);
                fmt(n+++"");

                分割输入(t*2);
                fmt("|");
            }
            System.out.println();
        }
        ___();
    }

    private static void 分割输入(int t) {
        int n = (int)Math.pow(2,N)/t-1;
        留白(n);
    }

    public static int maxLen(){
        int maxNum = (int) (Math.pow(2,N) - 2);
        int count = 1;
        while (maxNum/10!=0){
            count++;
            maxNum/=10;
        }
        return count;
    }

    public static void ___(){//输出n个格式_
        int t =(int)Math.pow(2,N);

        char[] c = new char[max];
        Arrays.fill(c,\'-\');
        String s = new String(c);

        for (int i = 0; i < t; i++) {
            fmt(s);
        }
        System.out.println();
    }

    public static void 留白(int n){//输出n个格式空白
        for (int i = 0; i < n; i++) {
            fmt("");
        }
    }

    public static void fmt(String s){//以最大数字长度输出
        System.out.print(String.format("%-"+max+"s",s));
    }
}

结果:

在这里插入图片描述

以上是关于满二叉树的输出(分割法)的主要内容,如果未能解决你的问题,请参考以下文章

完全二叉树与满二叉树的区别是啥?

关于树的判定(满二叉树完全二叉树平衡二叉树相似二叉树等价二叉树)

完全二叉树和满二叉树的区别

急急~判断一棵二叉树是满二叉树的算法!

leetcode 894. 所有可能的满二叉树(All Possible Full Binary Trees)

满二叉树的循环递归