常見演算法之1 先序遍歷二叉樹

2022-03-14 17:42:48 字數 583 閱讀 5413

前序遍歷:先遍歷父節點,然後左子節點,然後右子節點。

下圖的遍歷順序為:1245367

遞迴方式遍歷:

基本思想:對乙個樹的訪問,可以分成訪問當前節點,訪問左子樹和訪問右子樹。而訪問左右子樹時又可以看做是上述步驟的重複,因此可以遞迴的呼叫。

**流程:

void preorder(tnode*root)

}

非遞迴方式遍歷:基本思想:在訪問途中將依次遇到的節點儲存下來。由於節點出現次序與恢復次序是反序的,因此是乙個先進後出結構,需要用棧。

**流程:

void preorder1(tnode*root)

else}}

注:將**和開始時的附圖一起看,能更好的理解。

二叉樹之先序遍歷

對二叉樹進行遍歷時,即將對整個樹的遍歷不斷轉換為對每個結點進行同樣的遍歷。1.遞迴思想 思路 1 對根結點進行訪問 2 對根結點的左子樹進行先序遍歷 3 對根結點的右子樹進行先序遍歷。參考 遞迴遍歷二叉樹 const treenode right right right var preorderre...

先序構建二叉樹及先序遍歷二叉樹

先序為dlr d 根節點,l 左子樹,r 右子樹 a b c d e 先序序列為abdce,輸入為abd c e 表示空格,代表空樹 輸入按滿二叉樹輸入 每乙個節點都是乙個子樹的根節點 void pre create tree treenode t else else void pre visit ...

先序構建二叉樹及先序遍歷二叉樹

先序為dlr d 根節點,l 左子樹,r 右子樹 a b c d e 先序序列為abdce,輸入為abd c e 表示空格,代表空樹 輸入按滿二叉樹輸入 每乙個節點都是乙個子樹的根節點 void pre create tree treenode t else else void pre visit ...