????????其實(shí)對(duì)于這個(gè)問題,很多人都可以說清楚,前中后對(duì)應(yīng)的其實(shí)就是獲取根節(jié)點(diǎn)的順序來定義的,然后從左往右遍歷(即使是后序遍歷也是一樣,先左后右然后是root)。
? ? ? ? 然后前序遍歷和中序遍歷都有一個(gè)模型的圖片的,這個(gè)讓我copy一下百度百科的圖片。。



最后代碼實(shí)現(xiàn),建議使用遞歸,因?yàn)楹?jiǎn)單好記。。笑cry。
//前序遍歷遞歸的方式
? ? public void pre(TreeNode root){
? ? ? ? if(null!=root){
? ? ? ? //前序就是先答應(yīng)root節(jié)點(diǎn),然后左右遞歸
? ? ? ? ? ? System.out.print(root.getData()+"\t");
? ? ? ? ? ? pre(root.getLeft());
? ? ? ? ? ? pre(root.getRight());
? ? ? ? }
? ? }
? ? //中序遍歷采用遞歸的方式
? ? public void mid(TreeNode root){
? ? ? ? if(null!=root){
? ? ? ? ? ? mid(root.getLeft());
? ? ? ? // 中序遍歷就是左邊遞歸結(jié)束,然后直接打印,然后遞歸右邊
? ? ? ? ? ? System.out.print(root.getData()+"\t");
? ? ? ? ? ? mid(root.getRight());
? ? ? ? }
? ? }
? //后序遍歷采用遞歸的方式
? ? public void post(TreeNode root){
? ? ? ? if(root!=null){
? ? ? ? ? ? post(root.getLeft());
? ? ? ? ? ? post(root.getRight());
? ? ? ? //后序就是左遞歸之后右遞歸,然后最后打印
? ? ? ? ? ? System.out.print(root.getData()+"\t");
? ? ? ? }
? ? }
速記:前中后序的遍歷就是將打印的操作放在前中后即可,it is so easy。。還有記不住的?不會(huì)了吧,因?yàn)槠渑c代碼完全一樣。。。。