1 struct Node
2 {
3 int data;
4 Node* lchild;
5 Node* rchild;
6 }
7 void preorder(Node* parent)
8 {
9 if (parent!=NULL)
10 {
11 cout<<parent->data<<endl;
12 preorder(parent->lchild);
13 preorder(parent->rchild);
14 }
15 }
16 void inorder(Node* parent)
17 {
18 if (parent!=NULL)
19 {
20 inorder(parent->lchild);
21 cout<<parent->data<<endl;
22 inorder(parent->rchild);
23 }
24 }
25 void postorder(Node* parent)
26 {
27 if (parent!=NULL)
28 {
29 postorder(parent->lchild);
30 postorder(parent->rchild);
31 cout<<parent->data<<endl;
32 }
33 }
重新又看了一遍二叉樹(Binary Tree),發現很多東西自己還沒有弄明白,原來三種遍歷方式還不是自己想象中的那樣
前序遍歷(PreOrder)是先輸出自己,然後左,最後右。
中序遍歷(InOrder)是先左,再輸出自己,最後右。
後序遍歷(PostOrder)是先左,再右,最後輸出自己。
所謂的XX遍歷就是指把自己放在哪個優先位置上,而不是指從哪裡開始遍歷。
算下來其實搜索匹配也可以用這個方法,基本上就是以遞歸形成的。
另外還需要研究一下DFS(Depth First Search)以及BFS(Breadth First Search)的算法。