ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

树的遍历

2022-04-10 19:03:16  阅读:128  来源: 互联网

标签:遍历 int 访问 depth set 顺序


遍历方法

BFS(宽度优先搜索)

以下图的顺序进行访问
image
即先被访问的结点先拿出来
与其相似地,队列也具有先进先出的特点

DFS(深度优先搜索)

以下图的顺序进行访问
image

先序遍历

以下图的顺序进行访问
image
即按照 根 左 右的顺序访问

函数实现:使用递归的方法

点击查看代码
// 递归求深度,NIL=-1
void set_depth(int u, int d) {
    if (u == NIL) return;
    D[u] = d;
    set_depth(T[u].left, d + 1);
    set_depth(T[u].right, d + 1);
}

中序遍历

以下图的顺序进行访问
image
即按照 左 根 右的顺序访问

函数实现:

点击查看代码
void set_depth(int u, int d) {
    if (u == NIL) return;
    set_depth(T[u].left, d + 1);
	D[u] = d;
    set_depth(T[u].right, d + 1);
}

后序遍历

以下图的顺序进行访问
image
即按照 左 右 根的顺序访问

函数实现:

点击查看代码
void set_depth(int u, int d) {
    if (u == NIL) return;
    set_depth(T[u].left, d + 1);
	set_depth(T[u].right, d + 1);
	D[u] = d;
}

结论

所以我们就可以通过一棵树对应的三种访问顺序来还原这棵树
比如如果一棵树的先序,中序,后序访问顺序分别为
1 2 3 4 5
3 2 4 1 5
3 4 2 5 1
那么我们就可以还原出这棵树是下图的样子
image

注意:只有三种顺序都具备的条件下才能还原,缺一不可

标签:遍历,int,访问,depth,set,顺序
来源: https://www.cnblogs.com/qjc0714/p/16127053.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有