程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 二叉樹的三種遍歷(遞歸算法)

二叉樹的三種遍歷(遞歸算法)

編輯:C++入門知識

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)的算法。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved