二叉树的深度优先遍历原理及python实现
深度优先遍历
对于一颗二叉树,深度优先搜索(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实现相关推荐
- 深度优先遍历_二叉树的深度优先遍历,理解框架真的能够套用题目吗?不了解执行过程可能很难。...
显然这是一个很普通的二叉树的深度优先遍历,从中可以提取出这样的框架: class TreeNode { int val; TreeNode left, right; } public void isF ...
- PHP实现二叉树的深度优先遍历(前序、中序、后序)和广度优先遍历(层次) 转载陈小龙哈2017...
http://blog.csdn.net/baidu_30000217/article/details/52953127 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点 ...
- 二叉树的深度优先遍历逆推
二叉树的深度优先遍历逆推 二叉树的深度优先遍历有三种方式,分别叫做先序遍历(preorder).中序遍历(inorder)和后序遍历(postorder),它们之间的不同在于访问每个节点的次序不同. ...
- 二叉树的深度优先遍历(DFS)与广度优先遍历(BFS)
二叉树的深度优先遍历(DFS)与广度优先遍历(BFS) 深度优先遍历:从根节点出发,沿着左子树方向进行纵向遍历,直到找到叶子节点为止.然后回溯到前一个节点,进行右子树节点的遍历,直到遍历完所有可达节点 ...
- php 实现二叉树的最大深度_PHP实现二叉树的深度优先遍历(前序、中序、后序)和广度优先遍历(层次)...
前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次.要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历.中序遍历.后序遍历.具体说明如下: 前序遍 ...
- 二叉树的深度优先遍历和广度优先遍历
二叉树是一种很重要的数据结构,对于二叉树的遍历,有深度优先遍历和广度优先遍历,深度优先遍历又有先序.中序.后续遍历,广度优先遍历就是按层遍历. 1. 深度优先遍历 深度优先遍历,也就是先序.中序.后续 ...
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
深度优先搜索算法(Depth First Search),是搜索算法的一种.是沿着树的深度遍历树的节点,尽可能深的搜索树的分支. 当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点 ...
- 矮油~ 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
深度优先搜索算法(Depth First Search),是搜索算法的一种.是沿着树的深度遍历树的节点,尽可能深的搜索树的分支. 当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点 ...
- 二叉树的深度优先遍历 (前序 中序 后序)
深度优先遍历主要依靠递归实现,初学递归,研究二叉树的遍历顺序有助于加深对递归的理解. 例: *注意对比代码顺序 1.前序: public void deep_search(TreeNode root) ...
最新文章
- 【完整代码】Scala AKKA实现两个Actor之间的通信代码示例
- 共建公安标准体系 | 七牛云与锐安科技达成深度战略合作
- Kubernates和Docker
- javascript实现silverlight pivotViewer控件
- mysql批量存图片_教你如何在MySQL数据库中直接储存图片(3)
- 浓缩的就是精华——ES6迭代器精炼讲解
- Java程序员必读——领悟Java编程思想
- LINUX下用C遍历一个目录的代码
- 电路分析之正弦稳态电路的仿真与研究
- Access denied for user ''@'localhost' to database 'mysql‘’
- 最新全国机场名(持续更新2017-12-27)
- 使用XPath的爬虫
- 程序员专属壁纸十七张
- gets()函数的缺陷,引入fgets()函数
- ubuntu 20.04 安装ibus-rime输入法
- “serve with message ‘spawn vue-cli-service ENOENT”的解决办法
- Linux链路捆绑的两种方法
- NOPI导出数据,图片形成对比
- 16-K3S Helm
- 被问懵了,加密后的数据如何进行模糊查询?
热门文章
- AndroidMainfest.xml具体解释——lt;activitygt;
- 【spring-cloud】Eureka server和client之间的心跳通信
- svn添加到windows服务中
- 这篇文章来自我的微信朋友圈,并不特别好玩,但能够给创业者补点財务知识...
- oracle 的wm_concat函数使用
- Codeforces Round #228 (Div. 2)
- 刚copy试探发表了一篇文章文章,oschina感觉良好
- 解读SSL ***技术(二)
- Nacos集群部署说明
- CentOS 新增swap交换空间