当前位置:编程学习 > 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)的算法。

 

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,