zoukankan      html  css  js  c++  java
  • 数据结构之深度优先,广度优先遍历

    深度优先和广度优先遍历在树和图中应用最为普遍,思想也类似,因此放到一起来总结。

    二叉树的深度优先广度优先遍历:

    一棵二叉树(2,(2(3,4),3(4,5))),这是一棵满二叉树,一共有7个节点,根节点2,深度为3

    数据结构定义如下:

    class Node:
    	def __init__(self, value=None, left = None, right = None):
    		self.value = value
    		self.left = left
    		self.right = right
    

    先根遍历

    def preTraverse(tree):
    	if(tree):
    		print tree.value
    		preTraverse(tree.left)
    		preTraverse(tree.right)
    

    后根遍历与中根遍历类似,就不写了,用的都是深度优先遍历

    层序遍历,用的是广度优先遍历,需要额外一个队列作为临时变量保存每层的节点

    def hiraTraverse(tree, queue_node):
    	if len(queue_node)==0 & (tree is None):
    		queue_node.append(tree)
    	while len(queue_node)>0:
    		node = queue_node.pop(0)
    		print node.value
    		if not node.left is None:
    			queue_node.append(node.left)
    		if not node.right is None:
    			queue_node.append(node.right)
    

    图的深度优先广度优先遍历:

    图常用的存储方式包括邻接矩阵,邻接表等,这里以邻接矩阵为例

  • 相关阅读:
    Jboss下jaxws的开发
    Jboss as 服务器基本设置
    classloader常见问题总结
    Servlet容器 Jetty
    Jetty 的工作原理以及与 Tomcat 的比较
    resin设置jvm参数
    Solr4.0使用
    Solr 4.0部署
    Solr 搜索功能使用
    HttpSolrServer 实例管理参考,来自org.eclipse.smila.solr
  • 原文地址:https://www.cnblogs.com/xiamaogeng/p/4461110.html
Copyright © 2011-2022 走看看