文章目录
前言
树的遍历,是指依照一定的规律不重复地访问树中的每个节点。在本篇文章中我们主要介绍多叉树的深度优先遍历(DFS)和广度优先遍历(BFS)。
1. 深度优先遍历
深度优先遍历指的是是从根节点开始沿着树的每一个枝遍历到叶子节点,再遍历其他的枝。深度优先遍历又分为先序遍历和后序遍历,具体如下图所示:
在进行实现之前,我们先实现多叉树的数据结构,其结构如下:
struct Node{
char data;
vector<Node*> children;
Node(char data):data(data){
}
};
我们给出一个多叉树如下图:
实现该多叉树如下图所示:
int main(){
Node root('A');
Node B('B');
Node C('C');
Node D('D');
Node E('E');
Node F('F');
Node G('G');
Node H('H');
Node I('I');
Node J('J');
root.children.push_back(&B);
root.children.push_back(&C);
B.children.push_back(&D);
D.children.push_back(&G);
D.children.push_back(&H);
D.children.push_back(&I