这棵树有左孩子,右孩子,然后左孩子还有左孩子,右孩子,等,是一颗二叉树
classs Node
{
  Node left(){};  Node right(){};  String nodeName;
}现在有1个方法 void  printTree(Node root)
{
  //todo   //传入是根节点,如何把所有节点的nodename打印出来,谢谢了
}

解决方案 »

  1.   

    void  printTree(Node root)
    {
          if(root.left()!=null)
               printTree(root.left());
          if(root.right()!=null)
               printTree(root.right());
          System.out.printf(root.nodeName)
      
    }
      

  2.   

    http://tech.ddvip.com/2008-12/122847009897802.html
      

  3.   

    贴二叉树递归非递归前中后序遍历代码
    供参考
    public void preOrder(BinTreeNode<T>node){
    if(node == null){
    return;
    }
    printInfo(node);
    if(node.getLeftNode()!=null){
    preOrder(node.getLeftNode());
    }
    if(node.getRightNode()!=null){
    preOrder(node.getRightNode());
    }
    }
    public void iteraPreOrder(BinTreeNode<T>node){
    Stack<BinTreeNode<T>> stack = new Stack<BinTreeNode<T>>();
    if(node != null){
    stack.push(node);
    while(!stack.empty()){
    node = stack.pop();
    printInfo(node);
    if(node.getLeftNode()!=null){
    stack.push(node.getRightNode());
    }
    if(node.getRightNode()!=null){
    stack.push(node.getLeftNode());
    }
    }
    }
    }
    public void midOrder(BinTreeNode<T>node){
    if(node == null){
    return;
    }
    if(node.getLeftNode()!=null){
    midOrder(node.getLeftNode());
    }
    printInfo(node);
    if(node.getRightNode()!=null){
    midOrder(node.getRightNode());
    }
    }
    public void iteraMidOrder(BinTreeNode<T>p){
    Stack<BinTreeNode<T>>stack = new Stack<BinTreeNode<T>>();
    BinTreeNode<T> node = p;
    while(node != null || stack.size()>0){
    while(node != null){
    stack.push(node);
    node = node.getLeftNode();
    }
    if(stack.size()>0){
    node = stack.pop();
    printInfo(node);
    node = node.getRightNode();
    }
    }
    }
    public void lastOrder(BinTreeNode<T>node){
    if(node == null){
    return;
    }
    if(node.getLeftNode()!=null){
    lastOrder(node.getLeftNode());
    }
    if(node.getRightNode()!=null){
    lastOrder(node.getRightNode());
    }
    printInfo(node);
    }
    public void iteraLastOrder(BinTreeNode<T>p){
    BinTreeNode<T> q = p;   
            Stack<BinTreeNode<T>> stack = new Stack<BinTreeNode<T>>();   
            while (p != null) {   
                // 左子树入栈   
                for (; p.getLeftNode() != null; p = p.getLeftNode())   
                    stack.push(p);   
                // 当前节点无右子或右子已经输出   
                while (p != null && (p.getRightNode() == null || p.getRightNode() == q)) {   
                    printInfo(p);   
                    q = p;// 记录上一个已输出节点   
                    if (stack.empty())   
                        return;   
                    p = stack.pop();   
                }   
                // 处理右子   
                stack.push(p);   
                p = p.getRightNode();   
            }  
    }
    public void levOrder(BinTreeNode<T>node){
    ArrayList<BinTreeNode<T>> tempList = new ArrayList<BinTreeNode<T>>();
    tempList.add(node);
    while(tempList.size()!=0){
    BinTreeNode<T> nodeIndex0 = tempList.get(0);
    if(nodeIndex0.getLeftNode()!=null){
    tempList.add(nodeIndex0.getLeftNode());
    }
    if(nodeIndex0.getRightNode()!=null){
    tempList.add(nodeIndex0.getRightNode());
    }
    printInfo(nodeIndex0);
    tempList.remove(0);
    }
    tempList = null;
    }
    public void printInfo(BinTreeNode<T> node){
    System.out.print(node.getValue().toString()+"  ");
    }