您的位置:首页 > 理论基础 > 数据结构算法

数据结构之深度优先,广度优先遍历

2015-04-27 19:56 519 查看
深度优先和广度优先遍历在树和图中应用最为普遍,思想也类似,因此放到一起来总结。

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

一棵二叉树(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)


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

图常用的存储方式包括邻接矩阵,邻接表等,这里以邻接矩阵为例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐