首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
简述树的深度优先算法、广度优先算法,及非递归实现的特点。
[问答题]
简述树的深度优先算法、广度优先算法,及非递归实现的特点。
添加笔记
邀请回答
收藏(9)
分享
纠错
5个回答
添加回答
0
推荐
Nebulaliu
1:
树的深度优先遍历主要分为
:前序遍历、中序遍历以及后序遍历
前序遍历
:若二叉树为空则结束,否则依次先访问根节点,然后访问左子树,最后访问右子树。
中序遍历
:若二叉树为空则结束,否则先访问根节点的左子树,然后访问根节点,最后访问右子数。
后序遍历
:若二叉树为空则结束,否则先访问根节点的左子树,然后访问右子数,最后访问根节点。
深度优先一般采用递归的方式实现,递归的深度为树的高度。
2:
树的广度优先算法
:
广度优先是按照层次来遍历树的节点,先是根节点,然后依次遍历第二层子节点,当第二层子节点遍历完后,在依次遍历第三层子节点。广度优先采用队列来记录当前可遍历的节点,当遍历某个节点时,将其左孩子和右孩子结点依次入队,待该层遍历完了以后,再依次遍历下一层儿子结点。
3:
非递归实现特点
:
深度优先一般采用递归实现,如改用非递归,则可需要来模拟栈,当需要先遍历当前节点的儿子结点时(例如中序遍历)需要将其压入栈中,先遍历其儿子结点,然后再将其弹出栈,遍历当前节点。广度优先一般采用非递归来实现,用一个队列来保存依次需要遍历的节点。
编辑于 2015-07-30 16:13:08
回复(0)
0
快
1:
树的深度优先遍历主要分为
:前序遍历、中序遍历以及后序遍历
前序遍历
:若二叉树为空则结束,否则依次先访问根节点,然后访问左子树,最后访问右子树。
中序遍历
:若二叉树为空则结束,否则先访问根节点的左子树,然后访问根节点,最后访问右子数。
后序遍历
:若二叉树为空则结束,否则先访问根节点的左子树,然后访问右子数,最后访问根节点。
深度优先一般采用递归的方式实现,递归的深度为树的高度。
2:
树的广度优先算法
:
广度优先是按照层次来遍历树的节点,先是根节点,然后依次遍历第二层子节点,当第二层子节点遍历完后,在依次遍历第三层子节点。广度优先采用队列来记录当前可遍历的节点,当遍历某个节点时,将其左孩子和右孩子结点依次入队,待该层遍历完了以后,再依次遍历下一层儿子结点。
3:
非递归实现特点
:
深度优先一般采用递归实现,如改用非递归,则可需要来模拟栈,当需要先遍历当前节点的儿子结点时(例如中序遍历)需要将其压入栈中,先遍历其儿子结点,然后再将其弹出栈,遍历当前节点。广度优先一般采用非递归来实现,用一个队列来保存依次需要遍历的节点。
发表于 2015-07-28 16:22:14
回复(0)
0
小神龙
1:
树的深度优先遍历主要分为
:前序遍历、中序遍历以及后序遍历
前序遍历
:若二叉树为空则结束,否则依次先访问根节点,然后访问左子树,最后访问右子树。
中序遍历
:若二叉树为空则结束,否则先访问根节点的左子树,然后访问根节点,最后访问右子数。
后序遍历
:若二叉树为空则结束,否则先访问根节点的左子树,然后访问右子数,最后访问根节点。
深度优先一般采用递归的方式实现,递归的深度为树的高度。
2:
树的广度优先算法
:
广度优先是按照层次来遍历树的节点,先是根节点,然后依次遍历第二层子节点,当第二层子节点遍历完后,在依次遍历第三层子节点。广度优先采用队列来记录当前可遍历的节点,当遍历某个节点时,将其左孩子和右孩子结点依次入队,待该层遍历完了以后,再依次遍历下一层儿子结点。
3:
非递归实现特点
:
深度优先一般采用递归实现,如改用非递归,则可需要来模拟栈,当需要先遍历当前节点的儿子结点时(例如中序遍历)需要将其压入栈中,先遍历其儿子结点,然后再将其弹出栈,遍历当前节点。广度优先一般采用非递归来实现,用一个队列来保存依次需要遍历的节点。
发表于 2015-07-28 13:56:16
回复(0)
0
新手请多包涵
树的深度优先算法:第一步:沿某一条路径探索直到叶子节点;第二步:如果当前节点的所有子节点都已经被探索,回溯当前节点的父节点,第三步:继续探索当前节点的兄弟节点,直到所有节点都被探索完成。
树的广度有限算法:类似于分层遍历
使用额外的数据结构帮助来实现递归版本:深度优先使用栈,广度优先使用队列
发表于 2015-07-28 09:15:21
回复(0)
0
amber媛
二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。
发表于 2014-10-25 00:26:06
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
树
百度
上传者:
布小于一
难度:
5条回答
9收藏
13119浏览
热门推荐
相关试题
百度Spider如何在不超过抓取限...
百度
2011
系统设计
Java工程师
C++工程师
评论
(7)
来自
百度2011研发工程师笔试卷
判断一个括号字符串是否匹配正确,如...
百度
2011
栈
Java工程师
C++工程师
评论
(34)
来自
百度2011研发工程师笔试卷
仅用O(1)的空间,将整数数组按奇...
百度
2011
C++
Java
编程基础
Java工程师
C++工程师
评论
(25)
来自
百度2011研发工程师笔试卷
“连戏”在...
产品
运营
哔哩哔哩
行业常识
2020
评论
(1)
统计子序列数
动态规划
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题