從剛開始接觸遞歸蛔添,到接觸二叉樹遞歸遍歷痰催,簡單幾行代碼就能實現(xiàn)前中后序遍歷,而且迎瞧,前中后序遍歷的代碼基本一致夸溶,覺得好神奇
節(jié)點遞歸順序分析
代碼是遍歷二叉樹時常用的遞歸代碼,在1位置raverse函數(shù)返回值head節(jié)點凶硅,在2位置raverse函數(shù)返回值左孩子節(jié)點缝裁,在3位置traverse函數(shù)返回值為右孩子節(jié)點
public static void traverse(Node head){
if(head == null)
return ;
// 1 先序
traverse(head.left);
// 2 中序
traverse(head.left);
//3 后續(xù)
}
-
以先序為例子*
看圖
根據(jù)遞歸過程,可以發(fā)現(xiàn)足绅,二叉樹的每個節(jié)點會到達三次 ,根據(jù)圖中捷绑,訪問順序為 12444255521...
因此在第一次到達節(jié)點進行處理就是二叉樹的先序遍歷韩脑,第二次到達進行處理就是中序遍歷,第三次到達進行處理就是后序遍歷胎食。
遞歸序的作用
根據(jù)圖中的訪問順序可以發(fā)現(xiàn)扰才,節(jié)點可以收集左右節(jié)點的信息,即問題可以得到子問題的信息厕怜,是利用樹做動態(tài)規(guī)劃的基礎(chǔ)q孟弧!粥航!