非递归前序遍历,效率高 和 中序遍历代码都相似

   //非递归前序遍历
    static void NpreOrder(Node node){
Stack
<Node> S=new Stack<Node>(); Node p=node;//初始的时候有2个值 while(!S.isEmpty()||p!=null){   //算法1,栈不为空或者p指向的不是空循环执行下面步骤 if(p!=null){          //算法2,当p指向的不是空的时候,将p指向结点进站 System.out.print("<<<"); System.out.print(n.getKey()); S.push(p);       //结点进站 n=n.leftNode;     //将指针指向左孩子 } else{ //算法3,如果p指向为空::栈顶出栈并把值赋给指针 p=sk.pop(); p=p.rightNode; }
     } }
 
  static void NinOrder(BinTree node){
        java.util.Stack<BinTree> s=new java.util.Stack<BinTree>();  //循环前的变量1做好准备
        BinTree n=node;                       //变量2做好准备
        while(n!=null||!s.isEmpty()){
            if(n!=null){
                s.push(n);
                n=n.lchild;
            }
            else{
                n=s.pop();
                System.out.println(n.date);
                n=n.rchild;

            }
        }}
    
原文地址:https://www.cnblogs.com/cs-lcy/p/7202783.html