二叉樹,先 中 後,遍歷

2022-09-12 15:00:38 字數 1593 閱讀 9975

建議大家在小本本上,模擬一下,遍歷路徑,才能更好的理解**

**如下:

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 引數列表有傳入的先序序列和後序序列和他們的開頭和結尾 由於是遞迴函式,先寫乙個遞迴出口,顯然是...