「java打印树」Java打印二叉树
今天给各位分享java打印树的知识,其中也会对Java打印二叉树进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
如何用java打印一棵树
import java.util.LinkedList;/**
* 需求:按层打印一棵树
* 说明:树是保存在一个链表中
* created by wangjunfu on 2017-05-25. */
public class TreeNode {
String data;
TreeNode parent;
LinkedListTreeNode childlist;
TreeNode() {
data = null;
childlist = new LinkedList();
parent = null;
} //递归显示并打印一棵树
private static void displayTree(TreeNode f, int level) {
String preStr = ""; // 打印前缀
for (int i = 0; i level; i++) {
preStr += " ";
} for (int i = 0; i f.childlist.size(); i++) {
TreeNode t = f.childlist.get(i);
System.out.println(preStr + "-" + t.data); if (!t.childlist.isEmpty()) {
displayTree(t, level + 1);
}
}
}
}
java编打出5行圣诞树,求教每一步详细思想。下面是代码
按照你的要求加详细注释的圣诞树Java程序如下:(编程思想在注释中说明)
public class ShengDanShu2 {
//这个程序的编程思想是利用对for循环变量i的控制达到一层循环代替双层循环的目的
public static void main(String[] args) {
int n=5; //初始化打印圣诞树层数变量n
int a=0; //初始化打印前置空格数变量a
int b=0; //初始化打印星号数变量b
for(int i=1;i =n;i++){ //打印n层圣诞树
if(a!=(n-i)){ //如果前置空格数不等于n-i
System.out.print(" "); //打印一个空格
a++; //前置空格数加一
i=i-1; //i变量减一 目的是固定住i变量不变直到a==n-i
}else if(b!=(2*i-1)){ //如果星号数不等于2*i-1
System.out.print("*"); //打印一个星号
b++; //星号数加一
i=i-1; //i变量减一 目的是固定住i变量不变直到b==2*i-1
}else if(a==(n-i) b==(2*i-1)){//当以上两个条件都满足时,换行初始化a和b为0
System.out.println(); //打印换行
a=0; //对新的一行重新初始化前置空格数变量a
b=0; //对新的一行重新初始化打印星号数变量b
//这里没有控制for循环的i变量减一,因为这时i变量加一,开始新一行。
}
}
}
}
运行结果:
*
***
*****
*******
*********
java中把数组以二叉树形式打印出来
你说的意思应该是用数组的方式存储二叉树,这需要利用到完全二叉树的性质,
,完全二叉树通常采用数组而不是链表存储,其存储结构如下:
var
tree:array[1..n]of
longint;{n:integer;n=1}
对于tree[i],有如下特点:
(1)若i为奇数且i1,那么tree的左兄弟为tree[i-1];
(2)若i为偶数且in,那么tree的右兄弟为tree[i+1];
(3)若i1,tree的双亲为tree[i
div
2];
(4)若2*i=n,那么tree的左孩子为tree[2*i];若2*i+1=n,那么tree的右孩子为tree[2*i+1];
(5)若in
div
2,那么tree[i]为叶子结点(对应于(3));
(6)若i(n-1)
div
2.那么tree[i]必有两个孩子(对应于(4))。
(7)满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。
完全二叉树第i层至多有2^(i-1)个节点,共i层的完全二叉树最多有2^i-1个节点。
代码简单,网上很多,不懂也可以问我
用java如何打印圣诞树
import java.lang.Math;
public class printPine{
public static void main(String args[]){
int n,b,i,j;
n = 6; //树叶部分层数
b = 2; //树干部分层数
int h=n*2-1;
int l=h*2;
//绘制树叶部分
for(i=0;in;++i)
{
for(j=0;jl;++j)
{
if( Math.abs(n-1-j)=i ) System.out.print("*");
else System.out.print(" ");
}
System.out.print("\n");
}
//绘制树干部分
for(i=0;ib;++i)
{
for(j=0;jl;++j)
{
if(j==n-1) System.out.print("*");
else System.out.print(" ");
}
System.out.print("\n");
}
}
}
关于java打印树和Java打印二叉树的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-08,除非注明,否则均为
原创文章,转载请注明出处。