二叉树的深度遍历和广度遍历

 我来答
新科技17
2022-07-06 · TA获得超过5873个赞
知道小有建树答主
回答量:355
采纳率:100%
帮助的人:73.5万
展开全部

沿着树的深度遍历结点,尽可能深的搜索树的分支。如果当前的节点所在的边都被搜索过,就回溯到当前节点所在的那条边的起始节点。一直重复直到进行到发现源节点所有可达的节点为止。

因为深度优先搜索算法是先访问根节点,接着遍历左子树再遍历右子树。为了方便,我们可以引入 堆栈 这个数据结构来帮我们快速解决DFS算法。因为栈是 后进先出 的结构,所以我们可以先将 右子树压栈,再将左子树压栈 ,这样左子树就位于栈顶,可以保证先遍历左子树再遍历右子树。

我们通过下面的这个二叉树来简单的画图实现栈的深度优先搜索

当我们在压栈时,必须确保该节点的左右子树都为空,如果不为空就需要先将它的右子树压栈,再将左子树压栈。等左右子树都压栈之后,才将结点压栈。

解决方案

从根节点开始,沿着树的宽度遍历树的节点,直到所有节点都被遍历完为止。

因为是按照一层一层遍历的,所以我们考虑引入 队列 这个数据结构帮助我们实现广度优先搜索算法。

给出一棵二叉树,返回其节点值 从底向上 的层次序遍历
解决方法:和上面的实现方式类似,只是最后需要把容器翻转过来。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式