「java打印树」Java打印二叉树

博主:adminadmin 2022-12-08 07:36:07 88

今天给各位分享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打印二叉树的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-08,除非注明,否则均为首码项目网原创文章,转载请注明出处。