二叉樹遍歷(遞歸實現,前序,中序,後序遍歷)

上篇博客介紹了構建一棵二叉樹,可是並無介紹如何遍歷二叉樹,一下,咱們只介紹3三種遍歷二叉樹的形式,java

分別是,前序遍歷,中序遍歷,後序遍歷,由於我也是學習階段,不免會有解釋不清,或者理解有誤的,歡迎指正node

 

----------------------------------我是分割線------------------------------------post

咱們先定義一棵普通的二叉樹,以下圖學習

 

 

咱們先說前序遍歷吧!

  前序遍歷:經過遞歸進行遍歷,若是二叉樹爲空,則操做返回,若是非空,不然從根結點開始,而後遍歷左子樹完左子樹,在遍歷右子樹

前序遍歷的結果是: ABDGHEICFJK 爲何會遍歷出這種結果,請看上面對前序遍歷的描述,先遍歷左邊,而後在遍歷右邊spa

JAVA代碼以下:code

//前序遍歷	
public static void preTraversal(Node node){
		if(null!=node){
			System.out.println(node.getData());
			preTraversal(node.getLeft());
			preTraversal(node.getRight());
			return;
		}
	}

 

 

 

 

 

而後是中序遍歷!

  中序遍歷:經過遞歸進行遍歷,若是二叉樹爲空,則操做返回,若是非空,不然從根結點開始,中序遍歷根結點的左子樹,而後訪問根結點,最後中序遍歷右子樹

前序遍歷的結果是: GDHBEIACJFK 爲何會遍歷出這種結果,請看上面對中序遍歷的描述,先遍歷左邊,而後訪問根結點,而後在遍歷右邊遞歸

JAVA代碼以下:get

//中序遍歷	
public static void inOrder(Node node){
		if(null!=node){
			inOrder(node.getLeft());
			System.out.println(node.getData());
			inOrder(node.getRight());
			return;
		}
	}

 

 

 

最後是後序遍歷!

  後序遍歷:經過遞歸進行遍歷,若是二叉樹爲空,則操做返回,若是非空,不然從左到右,先葉子後結點的方式遍歷訪問左右子樹,最後訪問根結點

前序遍歷的結果是: GHDIEBJKFCA 爲何會遍歷出這種結果,請看上面對中序遍歷的描述,從左到右,先葉子,後結點博客

JAVA代碼以下:class

//後序遍歷	
public static void postOrder(Node node){
		if(null!=node){
			postOrder(node.getLeft());
			postOrder(node.getRight());
			System.out.println(node.getData());
			return;
		}
	}

 

 

以上就是二叉樹的其中三種遍歷方式,其中的差別性就在於遞歸調用的時候,對某個結點進行操做,

例如前序遍歷,每次遞歸調用,都是先打印結點的data信息,而後是訪問左葉子結點信息,又是打印結點信息,直到沒有左葉子的時候,返回上層結點,而後調用右葉子,如此遞歸,就會出現前序遍歷的結果

中序跟後序跟前序原理差很少,不一樣的在於何時打印結點信息而已,就給各位看官本身看了

 

 

 

到這,文章就結束了!

以上,均爲本人我的理解,比較簡單的理解,或許跟各位看官理解的有出入,歡迎指正交流

歡迎轉載,請註明出處跟做者,謝謝!

相關文章
相關標籤/搜索