1. 程式人生 > >非遞迴演算法得出一棵樹的高度

非遞迴演算法得出一棵樹的高度

計算二叉樹樹高的遞迴演算法我想各位朋友們都已經很熟悉了,那麼我們今天就來介紹一種非遞迴的演算法,主要利用的還是層次遍歷

/**
     * 得出一棵樹的高度(非遞迴演算法)
     */
    public int getHeight(Node node){
    	Node[] qu=new Node[255];
    	Node p=node;
    	int tail=0;
    	int head=0;
    	int level=0;
    	int point;//用來指示每一層的最後一個節點
    	if(node!=null){
    		qu[tail++]=p;
    		point=tail;
    		while(head!=tail){
    			p=qu[head++];
    			if(p.left!=null){
    				qu[tail++]=p.left;
    			}
    			if(p.right!=null){
    				qu[tail++]=p.right;
    			}
    			if(head==point){
    				level++;
    				point=tail;
    			}
    		}
    	}
    	return level;
    }