首页 > 其他分享 >水一个丐中丐版二叉树可视化打印

水一个丐中丐版二叉树可视化打印

时间:2023-02-23 20:26:07浏览次数:29  
标签:int System step static 二叉树 poi 丐版 丐中

最近自习了一点点java,就自己小试一下,这个东西之前用C写过的。这个代码可以在自己调试二叉树相关程序的时候更直观方便地观察二叉树的信息。

由于个人能力实在有限故没有做什么优化,又因为java只学了一点点所以代码的思路上更贴近C的代码。

代码如下:

import java.util.Scanner;

public class Main {
static int n;
static int[] tree=new int[50];
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
n= in.nextInt();
for (int i=1;i<=n;i++)
{
tree[i]=in.nextInt();
}
print();
}
public static void print()//可视化打印二叉树
{
int[] poi = new int[50];//poi[i]记录下标为i的节点的水平位置
int N = 2;
for (; N - 1 < n; N *= 2) {
}//计算节点数不小于tree的满二叉树最少有多少节点(满二叉树的节点数量为2^k-1)
poi[1]=N/2;
if(n>=2)
{
po(poi, 1, N / 2, N / 4);
}
System.out.println(n);
for(int j=1;j<=n;)
{
for (int i = 1; i < N&&j<=n; i++)
{
if(i!=poi[j])
{
System.out.print(" ");
}
else
{
System.out.print(tree[j]);
j++;
}
}
System.out.println();
}
}
public static void po(int[] p,int i,int p0,int step)//计算每个节点的水平位置
{
if(i>n/2)
{
return;
}
p[2*i]=p0-step;
p[2*i+1]=p0+step;
po(p,2*i,p[2*i],step/2);
po(p,2*i+1,p[2*i+1],step/2);
}
}
实际效果:

 

 

 

 功能有些简陋,见笑

标签:int,System,step,static,二叉树,poi,丐版,丐中
From: https://www.cnblogs.com/Y-Y-R/p/17149255.html

相关文章