数据结构复习

本文介绍了二叉树的三种遍历方式:先序遍历、中序遍历和后序遍历,并通过实例进行了说明。此外,还介绍了图的两种遍历方法:深度优先搜索和广度优先搜索,以及几种常见的内部排序算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、二叉遍历

 

先序遍历:先遍历根结点,遍历左子树,遍历右子树

中序遍历:先遍历左子树,遍历根结点,遍历右子树

后序遍历:先遍历左子树,遍历右子树,遍历根结点

 

实例:遍历a+b*(c-d)-e/f  如: 

                                                                  -

                                                    +                        /

                                              a           *           e          f

                                                      b       - 

                                                            c    d

 

先序遍历:-+a*b-cd/ef

中序遍历:a+b*c-d-e/f

后序遍历:abcd-*+ef/-

 

2、图的遍历

深度优先搜索:
下面图中的数字显示了深度优先搜索顶点被访问的顺序。



 
 为了实现深度优先搜索,首先选择一个起始顶点并需要遵守三个规则:
(1) 如果可能,访问一个邻接的未访问顶点,标记它,并把它放入栈中。
(2) 当不能执行规则1时,如果栈不空,就从栈中弹出一个顶点。
(3) 如果不能执行规则1和规则2,就完成了整个搜索过程。

广度优先搜索:
在深度优先搜索中,算法表现得好像要尽快地远离起始点似的。相反,在广度优先搜索中,算法好像要尽可能地靠近起始点。它首先访问起始顶点的所有邻接点,然后再访问较远的区域。它是用队列来实现的。
下面图中的数字显示了广度优先搜索顶点被访问的顺序。


 实现广度优先搜索,也要遵守三个规则:
(1) 访问下一个未来访问的邻接点,这个顶点必须是当前顶点的邻接点,标记它,并把它插入到队列中。
(2) 如果因为已经没有未访问顶点而不能执行规则1时,那么从队列头取一个顶点,并使其成为当前顶点。
(3) 如果因为队列为空而不能执行规则2,则搜索结束。
 具体请参考:http://blog.youkuaiyun.com/andyelvis/archive/2007/08/06/1728378.aspx

 

3、内部排序

 

插入排序:



 

快速排序:



 

归并排序:



 

选择排序:



 

基数排序:(按照每个位数的大小进行分别排序)



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值