資料結構之二叉樹遍歷的遞迴演算法
阿新 • • 發佈:2019-02-07
二叉樹是資料結構這門課程中非常重要的知識點,也是最基本的一種樹形結構。在二叉樹的遍歷又是這部分內容的重中之重,那麼今天就這部分內容和大家做一個分享。所謂二叉樹遍歷,就是按照某種特定的次序,遍訪整個二叉樹中的每個結點,使得每個結點被訪問一次,而且只訪問一次。
在二叉樹中我們令L,R,V分別表示二叉樹被訪問結點的左子樹,右子樹和該結點。遍歷一般是規定從左向右,所以就有以下3種規則:VLR(前序遍歷)、LVR(中序遍歷)、LRV(後序遍歷)。
下面給大家分享三種遍歷的演算法:
1、二叉樹中的前序遍歷演算法
template<class Type> void BinTree<Type>::PreOrder(BinTreeNode<Type> *t)const { if(t != NULL) { cout<<t->data<<" "; PreOrder(t->leftChild); PreOrder(t->rightChild); } }
2、二叉樹中的中序遍歷演算法
template<class Type>
void BinTree<Type>::InOrder(BinTreeNode<Type> *t)const
{
if(t != NULL)
{
InOrder(t->leftChild);
cout<<t->data<<" ";
InOrder(t->rightChild);
}
}
3、二叉樹中的後序遍歷演算法
以上就是本次分享的內容啦,希望能幫到大家template<class Type> void BinTree<Type>::PostOrder(BinTreeNode<Type> *t)const { if(t != NULL) { PostOrder(t->leftChild); PostOrder(t->rightChild); cout<<t->data<<" "; } }