深度优先遍历

对于一颗二叉树,深度优先搜索(Depth First Search)是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。
那么深度遍历有重要的三种方法。这三种方式常被用于访问树的节点,它们之间的不同在于访问每个节点的次序不同。这三种遍历分别叫做先序遍历(preorder),中序遍历(inorder)和后序遍历(postorder)。我们来给出它们的详细定义,然后举例看看它们的应用。

  • 先序遍历 在先序遍历中,我们先访问根节点,然后递归使用先序遍历访问左子树,再递归使用先序遍历访问右子树
  • 根节点->左子树->右子树
def preorder(self, root):"""递归实现深度优先遍历"""if root == None:returnprint(root.item)  # 前序self.preorder(root.lchild)self.preorder(root.rchild)
  • 中序遍历 在中序遍历中,我们递归使用中序遍历访问左子树,然后访问根节点,最后再递归使用中序遍历访问右子树
  • 左子树->根节点->右子树
def inorder(self, root):"""中序"""if root == None:returnself.inorder(root.lchild)print(root.item)  # 中序self.inorder(root.rchild)
  • 后序遍历 在后序遍历中,我们先递归使用后序遍历访问左子树和右子树,最后访问根节点
  • 左子树->右子树->根节点
def postorder(self, root):"""后序"""if root == None:returnself.postorder(root.lchild)self.postorder(root.rchild)print(root.item)

二叉树的深度优先遍历原理及python实现相关推荐

  1. 深度优先遍历_二叉树的深度优先遍历,理解框架真的能够套用题目吗?不了解执行过程可能很难。...

    显然这是一个很普通的二叉树的深度优先遍历,从中可以提取出这样的框架: class TreeNode { int val; TreeNode left, right; } public void isF ...

  2. PHP实现二叉树的深度优先遍历(前序、中序、后序)和广度优先遍历(层次) 转载陈小龙哈2017...

    http://blog.csdn.net/baidu_30000217/article/details/52953127 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点 ...

  3. 二叉树的深度优先遍历逆推

    二叉树的深度优先遍历逆推 二叉树的深度优先遍历有三种方式,分别叫做先序遍历(preorder).中序遍历(inorder)和后序遍历(postorder),它们之间的不同在于访问每个节点的次序不同. ...

  4. 二叉树的深度优先遍历(DFS)与广度优先遍历(BFS)

    二叉树的深度优先遍历(DFS)与广度优先遍历(BFS) 深度优先遍历:从根节点出发,沿着左子树方向进行纵向遍历,直到找到叶子节点为止.然后回溯到前一个节点,进行右子树节点的遍历,直到遍历完所有可达节点 ...

  5. php 实现二叉树的最大深度_PHP实现二叉树的深度优先遍历(前序、中序、后序)和广度优先遍历(层次)...

    前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次.要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历.中序遍历.后序遍历.具体说明如下: 前序遍 ...

  6. 二叉树的深度优先遍历和广度优先遍历

    二叉树是一种很重要的数据结构,对于二叉树的遍历,有深度优先遍历和广度优先遍历,深度优先遍历又有先序.中序.后续遍历,广度优先遍历就是按层遍历. 1. 深度优先遍历 深度优先遍历,也就是先序.中序.后续 ...

  7. 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]

    深度优先搜索算法(Depth First Search),是搜索算法的一种.是沿着树的深度遍历树的节点,尽可能深的搜索树的分支. 当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点 ...

  8. 矮油~ 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]

    深度优先搜索算法(Depth First Search),是搜索算法的一种.是沿着树的深度遍历树的节点,尽可能深的搜索树的分支. 当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点 ...

  9. 二叉树的深度优先遍历 (前序 中序 后序)

    深度优先遍历主要依靠递归实现,初学递归,研究二叉树的遍历顺序有助于加深对递归的理解. 例: *注意对比代码顺序 1.前序: public void deep_search(TreeNode root) ...

最新文章

  1. 【完整代码】Scala AKKA实现两个Actor之间的通信代码示例
  2. 共建公安标准体系 | 七牛云与锐安科技达成深度战略合作
  3. Kubernates和Docker
  4. javascript实现silverlight pivotViewer控件
  5. mysql批量存图片_教你如何在MySQL数据库中直接储存图片(3)
  6. 浓缩的就是精华——ES6迭代器精炼讲解
  7. Java程序员必读——领悟Java编程思想
  8. LINUX下用C遍历一个目录的代码
  9. 电路分析之正弦稳态电路的仿真与研究
  10. Access denied for user ''@'localhost' to database 'mysql‘’
  11. 最新全国机场名(持续更新2017-12-27)
  12. 使用XPath的爬虫
  13. 程序员专属壁纸十七张
  14. gets()函数的缺陷,引入fgets()函数
  15. ubuntu 20.04 安装ibus-rime输入法
  16. “serve with message ‘spawn vue-cli-service ENOENT”的解决办法
  17. Linux链路捆绑的两种方法
  18. NOPI导出数据,图片形成对比
  19. 16-K3S Helm
  20. 被问懵了,加密后的数据如何进行模糊查询?

热门文章

  1. AndroidMainfest.xml具体解释——lt;activitygt;
  2. 【spring-cloud】Eureka server和client之间的心跳通信
  3. svn添加到windows服务中
  4. 这篇文章来自我的微信朋友圈,并不特别好玩,但能够给创业者补点財务知识...
  5. oracle 的wm_concat函数使用
  6. Codeforces Round #228 (Div. 2)
  7. 刚copy试探发表了一篇文章文章,oschina感觉良好
  8. 解读SSL ***技术(二)
  9. Nacos集群部署说明
  10. CentOS 新增swap交换空间