二叉树非递归遍历

package algorithm;

import java.util.Stack;

public class BinTree {
	private char     c;
	private BinTree lchild;
	private BinTree rchild;
	public BinTree(char tc){
		c = tc;
	}
	
	public static void preOrder(BinTree tree ){
		System.out.println(tree.c);
		if(tree.lchild!=null)
			preOrder(tree.lchild);
		if(tree.rchild!=null)
			preOrder(tree.rchild);
	}
	
	public static void forOrder(BinTree tree){
		Stack st = new Stack();
		BinTree it = tree;
		while(true){
			if(it!=null)
				System.out.println(it.c);
			else{
				if(st.size()==0)
					break;
				it = (BinTree)st.pop();
				continue;
			}
			if(it.rchild!=null)
				st.push(it.rchild);
			it = it.lchild;
		}
	}
	
	 public static void main(String[] args){
		    BinTree b1 = new BinTree('a');    
	        BinTree b2 = new BinTree('b');    
	        BinTree b3 = new BinTree('c');    
	        BinTree b4 = new BinTree('d');    
	        BinTree b5 = new BinTree('e');    
	    
	        /**  
	         *      a   
	         *     / /  
	         *    b   c  
	         *   / /  
	         *  d   e  
	         */    
	        b1.lchild = b2;    
	        b1.rchild = b3;    
	        b2.lchild = b4;    
	        b2.rchild = b5;   
	        
	        forOrder(b1);      
	}
}

 

posted @ 2017-04-13 19:35  cnchengv  阅读(82)  评论(0)    收藏  举报