美文网首页数据结构与算法
二叉树 深度优先与广度优先

二叉树 深度优先与广度优先

作者: 小明讲啥故事 | 来源:发表于2019-03-18 10:55 被阅读0次
image

对于一颗二叉树,深度优先搜索(Depth First Search)是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。以上面二叉树为例,深度优先搜索的顺序

为:ABDECFG。怎么实现这个顺序呢 ?深度优先搜索二叉树是先访问根结点,然后遍历左子树接着是遍历右子树,因此我们可以利用堆栈的先进后出的特点,

现将右子树压栈,再将左子树压栈,这样左子树就位于栈顶,可以保证结点的左子树先与右子树被遍历。

广度优先搜索(Breadth First Search),又叫宽度优先搜索或横向优先搜索,是从根结点开始沿着树的宽度搜索遍历,上面二叉树的遍历顺序为:ABCDEFG.

可以利用队列实现广度优先搜索。

二叉树深度的性质:

1、在非空二叉树中,第i层的结点总数不超过2^(i-1) , i>=1;

2、深度为h的二叉树最多有2^h -1个结点(h>=1),最少有h个结点;

3、对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;

4、具有n个结点的完全二叉树的深度为(㏒ n) +1;

5、有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:

若I为结点编号则 如果I>1,则其父结点的编号为I/2;

如果2I<=N,则其左孩子(即左子树的根结点)的编号为2I;若2*I>N,则无左孩子;

参考资料:百度百科—二叉树

相关文章

  • 5. 深度优先、广度优先

    1. 二叉树的深度优先遍历和广度优先遍历2. 深度优先搜索递归和非递归实现 深度优先(DFS):前序遍历 广度优先...

  • 二叉树遍历

    二叉树的遍历,分为深度优先遍历和广度优先遍历,其中深度优先遍历又分为有前序、中序、后序遍历,广度优先遍历就是按层遍...

  • 前端面试考点之数据结构

    1、深度优先和广度优先的区别 1) 二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法...

  • 搜索

    一、深度优先搜索 图深度优先遍历、深度优先搜索算法求有权图两点最短路径 二、广度优先搜索 图广度优先遍历、广度优先...

  • 二叉树

    深度优先遍历 递归 DFS 广度优先遍历 递归BFS 二叉树的最大最小深度 判断二叉树是否中轴对称

  • 14-深度优先搜索(Depth First Search)

    深度优先搜索(Depth First Search) 与广度优先搜索一样,在二叉树搜索部分,也有用到过类似于深度优...

  • Python爬虫:关于 广度优先 和 深度优先

    广度优先和深度优先 关于广度优先和深度优先,首先,不管是广度还是深度,都需要定义一个爬取的深度 crawl_dee...

  • 算法之二叉树遍历

    二叉树遍历可以使用深度优先周游二叉树和广度优先周游二叉树,深度优先又可以分为前序、中序、后序三种方式遍历,每种方式...

  • 多级树的深度优先遍历与广度优先遍历(Java实现)

    多级树的深度优先遍历与广度优先遍历(Java实现) 深度优先遍历与广度优先遍历其实是属于图算法的一种,多级树可以看...

  • 二叉树遍历

    二叉树的遍历分为深度优先遍历(Depth First Traversal)和广度优先遍历(Breath First...

网友评论

    本文标题:二叉树 深度优先与广度优先

    本文链接:https://www.haomeiwen.com/subject/gbfvmqtx.html