如题, 用递归写一个方法打印一个叉树节点,应该如何写呢?求指点阿,谢谢了!!

解决方案 »

  1.   

    递归就是调用自身,我觉得可以用数组来做,进行分层,判断每层的length是否为0
      

  2.   

    public void treeTraversal(Node node) {
        while(node.hasNextChild()) {
            childnode = node.nextChild();
            print(childnode);
            treeTraversal(childnode);  
        }
    }
      

  3.   

    我觉得既然是java,还是最好体现一种面向对象的思想。。
    也就是把每个节点看成一个对象,这个对象包含层次,值,子节点对象这几个属性。也可以多加几个属性。
    方法的时候就是读一个节点,如果不是最底层的节点的话就生成对象,并让该方法读子节点,递归调用
      

  4.   

    public static String getTreeInfo(Branch root){
    ArrayList<ICorp> subordinateList = root.getSubordinate();
    String info = "";
    for(ICorp s :subordinateList){
    if(s instanceof Leaf){ //叶子节点
          info = info + s.getInfo()+"\n";
    }else{ //非叶子节点
          info = info + s.getInfo() +"\n"+ getTreeInfo((Branch)s);
     }
    }
    return info;
    }
    遍历叉树分为深度优先和广度优先,上面的为深度优先,依据用户传递来的节点获得该节点下的所以节点信息。
    并且树状模型很符合组合模式:所有节点都是一个对象,树枝节点和叶子节点有许多共性。
      

  5.   


    public void treeTraversal(Node node) {
    if(有子节点){
    for(node中所有的子节点i)
    treeTravelsal(i);
    }
    System.out.println(a.value);楼主我写过一个二叉树的打印方法,不妨参考下
    https://www.dropbox.com/s/j497saw4ppy6ojk/TestNode.java
      

  6.   

    上面改下public void treeTraversal(Node node) {
    if(node.有子节点){
    for(node中所有的子节点i)
    treeTravelsal(i);
    }
    打印node;
      

  7.   

    给几段伪代码//先序
    traversal(Node n) {
      print(n);//输出
      if(n.hasLeft()) {
         traversal(n.left);
      }
      if(n.hasRight()) {
         traversal(n.right);
      }
    }//中序
    traversal(Node n) { 
      if(n.hasLeft()) {
         traversal(n.left);
      }
      print(n);//输出
      if(n.hasRight()) {
         traversal(n.right);
      }
    }//后序
    traversal(Node n) { 
      if(n.hasLeft()) {
         traversal(n.left);
      } 
      if(n.hasRight()) {
         traversal(n.right);
      }
      print(n);//输出
    }