練習 二叉樹的遞迴與非遞迴遍歷(前序 中序 後序)

2021-08-18 16:17:39 字數 798 閱讀 5731

二叉樹是一種非常重要的資料結構,很多其它資料結構都是基於二叉樹的基礎演變而來的。對於二叉樹,有前序、中序以及後序三種遍歷方法。因為樹的定義本身就 是遞迴定義,因此採用遞迴的方法去實現樹的三種遍歷不僅容易理解而且**很簡潔。而對於樹的遍歷若採用非遞迴的方法,就要採用棧去模擬實現。在三種遍歷 中,前序和中序遍歷的非遞迴演算法都很容易實現,非遞迴後序遍歷實現起來相對來說要難一點。

void preorder1(bintree *root)     //遞迴前序遍歷 

}

void preorder2(bintree *root)     //非遞迴前序遍歷 

if(!s.empty())

}}

void inorder1(bintree *root)      //遞迴中序遍歷

}

void inorder2(bintree *root)      //非遞迴中序遍歷

if(!s.empty())

}

}

void postorder1(bintree *root)    //遞迴後序遍歷

}

void postorder2(bintree *root)    //非遞迴後序遍歷

if(!s.empty())

else //第二次出現在棧頂

}}

}

二叉樹的遞迴遍歷與非遞迴遍歷

二叉樹的遞迴遍歷與非遞迴遍歷 include include include 本程式實現二叉樹的建立,遞迴遍歷與非遞迴遍歷 typedef struct tnode tnode,pnode 構造二叉樹 pnode createtree else pnode data data pnode lchil...

二叉樹的遞迴遍歷與非遞迴遍歷

二叉樹的遍歷有遞迴與非遞迴兩種方式,但思想大致相同 前序 先列印然後遍歷完他的左子樹,左子樹為空時開始返回,並且開始以棧中元素為根遍歷右子樹 中序 先遍歷左子樹然後左子樹入棧,左子樹為空再列印,再遍歷右子樹 後序 先遍歷完左子樹,左子樹入棧儲存,再遍歷右子樹,遍歷完列印,否則繼續入棧 遞迴遍歷 遞迴...

二叉樹遍歷(遞迴 非遞迴)

二叉樹以及對二叉樹的三種遍歷 先根,中根,後根 的遞迴遍歷演算法實現,以及先根遍歷的非遞迴實現。node public class node public node left public node right public object value 遍歷訪問操作介面 public inte ce ...