深度优先与⼴度优先的区别
区别:
(1)⾸先⼆叉树的深度优先遍历的⾮递归的通⽤做法是采⽤栈,⼴度优先遍历的⾮递归做法是采⽤队列。
(2)深度优先遍历:对每⼀个可能的分⽀路径深⼊到不能再深⼊为⽌,⽽且每个节点只能访问⼀次(⼆叉树的深度优先遍历⽐较特殊,可以细分为先序遍历,中序遍历,后序遍历)。
⼴度优先遍历:⼜叫层次遍历从上往下对每⼀层依次访问,在每⼀层中,从左往右(也可以从右往左)访问节点,访问完⼀层就继续访问下⼀层,直到没有节点可以访问为⽌。
先序中序后序遍历二叉树(3)深度优先搜索算法,:不全部保留节点,占⽤空间少,有回溯操作(即有⼊栈,出栈操作),运⾏速度慢。
⼴度优先搜索算法:保留全部节点,占⽤空间⼤,⽆回溯操作(即⽆⼊栈,出栈操作),运⾏速度快。
(4)深度优先遍历:不全部保留节点,扩展完的结点从数据库中弹出删去,这样,⼀般在数据库中存储的结点数就是深度值,因此它占⽤的空间较少。
⼴度优先遍历:⼀般需要存储产⽣的所有的结点,占⽤的存储空间要⽐深度优先搜索⼤的多,因此在程序设计的过程中必须考虑溢出和节省内存空间的问题。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论