建議大家在小本本上,模擬一下,遍歷路徑,才能更好的理解**
**如下:
package class_04;
import j**a.util.stack;
public class code_01_preinpostr**ersal
} public static void preorderrecur(node head)
system.out.print(head.value + " ");
preorderrecur(head.left);
preorderrecur(head.right);
} public static void inorderrecur(node head)
inorderrecur(head.left);
system.out.print(head.value + " ");
inorderrecur(head.right);
} public static void posorderrecur(node head)
posorderrecur(head.left);
posorderrecur(head.right);
system.out.print(head.value + " ");
} /*
* 非遞迴版,先序遍歷
* 為什麼要利用棧,原因:因為二叉樹是乙個從上到下的過程,而棧可以返回上去。
* 思路:首先把根節點壓入,先壓右,再壓左,這樣出棧順序就是 先左後右,彈出乙個,就列印乙個。
* * */
public static void preorderunrecur(node head)
if (head.left != null)
}} system.out.println();
} /*
* 非遞迴版,中序遍歷
* 思路:先把當前結點的左邊界壓入棧中,如果當前結點為空,從棧中彈出乙個列印,當前結點網右走,
* 否則,繼續把左邊界壓入棧中
* * */
public static void inorderunrecur(node head) else
}} system.out.println(); }
/* 非遞迴版,後序遍歷
* 思路:後序遍歷順序是:左右中,那麼反過來,中右左,便是先序遍歷的思路了。
* 只不過用乙個輔助棧,逆序列印出來
* */
public static void posorderunrecur1(node head)
if (head.right != null)
}while (!s2.isempty())
} system.out.println();
} public static void posorderunrecur2(node h) else if (c.right != null && h != c.right) else
}} system.out.println();
} public static void main(string args)
}
二叉樹 非遞迴遍歷(先 中 後)
include include include define maxsize 20 最多結點個數 using namespace std 二叉鍊錶 typedef struct bnodebnode,btree 順序棧 typedef btree datatype typedef structseq...
詳細易懂的二叉樹遍歷(先中後)
首先說明,這只是我個人的一些理解與體會,我寫下來是想讓自己能隨時隨地複習與思考,並不是說想去教人家,所以其中可能會有些我個人理解不對的地方,這也正是我寫部落格的原因,這樣才能不斷進步,當然如果對讀者有用的話,一起共勉。今天我想記的是二叉樹的遍歷 先中後三種 我們都知道二叉樹的遍歷有四種,分別是先序遍...
二叉樹先序遍歷和中序遍歷確定二叉樹
由於希望得到一顆二叉樹,所以返回值型別是乙個指向根節點的指標 表示得到了一顆二叉樹 btnode creatbt char pre,char int,int l1,int r1,int l2,int r2 引數列表有傳入的先序序列和後序序列和他們的開頭和結尾 由於是遞迴函式,先寫乙個遞迴出口,顯然是...