--------X-------- 
----X-------X---- 
--X---X---X---X-- 
-X-X-X-X-X-X-X-X- 
XXXXXXXXXXXXXXXXX 最底层 顶层一个节点,下一层有 两个 然后4, 8,16个 最底层是16个字符 
请帮忙用递归的方法 画一下这个二叉树的图 我想了好久总是不对  请高手指点下 

解决方案 »

  1.   

    楼主 看看
    http://www.javaeye.com/topic/438002
    -
    http://www.javaeye.com/topic/155158
    -
    http://www.javaeye.com/topic/271176
      

  2.   

    昨晚不是贴过了么?不过我发现我程序一个小问题 现在改好了public class test2 { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO 自动生成方法存根
    boolean [] table=new boolean[17];
    DrawTree(table, 0);
    }

    public static void DrawTree(boolean[] table,int deep)
    {
    boolean[] drawTable=new boolean[table.length];
    System.arraycopy(table, 0, drawTable, 0, table.length);
    if(deep==5)
    {
    return;
    }else {
    int temp=-1;boolean ctr=true;
    for(int j=0;j<table.length;j++)
    {

    if(!table[j])
    {
    if(ctr)
    {
    temp=j;
    ctr=false;
    table[j]=true;
    }else {
    table[j]=true;
    table[(temp+j+1)/2]=false;
    ctr=true;
    }

    }else {
    table[j]=true;
    }
    }

    DrawTree(table,deep+1);

    for(int i=0;i<drawTable.length;i++)
    {
    if(drawTable[i])
    System.out.print("-"); else 
    System.out.print("X");
    }
    System.out.println();

    }
    }}
      

  3.   

    这次加了注释  运行结果为:
    ----------------X----------------
    --------X---------------X--------
    ----X-------X-------X-------X----
    --X---X---X---X---X---X---X---X--
    -X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X-
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpublic class test2 { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO 自动生成方法存根
    boolean [] table=new boolean[33];
    DrawTree(table, 0);
    }

    public static void DrawTree(boolean[] table,int deep)
    {
    //对照table画出当前deep(行)的内容  false画‘X’true画'-'

    //用drawTable保存table,因为后面要改变table
    boolean[] drawTable=new boolean[table.length];
    System.arraycopy(table, 0, drawTable, 0, table.length);

    //计算deep的深度是否到达2^deep=N;
    if(deep==(int)(Math.log(table.length)/Math.log((double)2))+1 )
    {
    return;
    }else {
    //改变table的内容 及计算下次应当如何画
    //思想:遇前两个'X'合并为一个‘X’ 第a个和第b个 合并为((a+b)+1)/2
    int temp=-1;//记录a的index
    boolean ctr=false;//控制是否找到了一个‘X’
    for(int j=0;j<table.length;j++)
    {

    if(!table[j])
    {
    table[j]=true;
    if(!ctr)//找到第一个
    {
    temp=j;
    ctr=true;
    }else {
    table[(temp+j+1)/2]=false;
    ctr=false;//找到2个后 重新标记
    }
    }else {
    table[j]=true;
    }
    }

    DrawTree(table,deep+1); //查找deep的下一层

    //对照drawTable 画出图形
    for(int i=0;i<drawTable.length;i++)
    {
    if(drawTable[i])
    System.out.print("-"); else 
    System.out.print("X");
    }
    System.out.println();

    }
    }}
      

  4.   

    有一个问题问高手,比如我有一个分页的JSP页面。是即时分页的那种。不是一起查出来的那种,页面上的每条记录 前面都有一个复选框。比如我在第一页点了几个复选框。然后请求第二页 这个时候第一页的那几个选中的复选框。准备提交的参数 就被清空了 ,我现在希望能把之前点击过的复选框的值,能否不丢失能保存起来 等到我所有的页面挑选好点击好后然后能够一起交给服务器处理
    这个问题有什么好的解决方法吗?