Scrapy深度优先与广度优先算法

这个是个人纪录,如果哪里不对,还希望评论里指点,谢谢。
Scrapy深度优先与广度优先算法_第1张图片
深度优先就是:A—>B—>D—>E—>-I–>C—>F—>G—>H
广度优先就是:A—>B—>C—>D—>E—>F—>G—>H—>I

深度优先(递归实现)

def depth_tree(tree_node):
	if terr_node is None:
		print(tree_node)
		if tree_node._left is None:
			return depth_tree(tree_node._left)
		if tree_node._rigth is None:
			return depth_tree(tree_node._rigth)

注意:如果递归的太深会出现栈溢出。

广度优先(队列实现)

def level_queue(root):
	if root is None:
		return
	myqueue = []
	node = root
	myqueue.append(node)#A 循环一圈下来里面是B,C
	while myqueue:
		node = myqueue.pop(0) 
		print(node)#A
		if node.zuo is Node:
			myqueue.append(node.zuo)
		if node.you is Node:
			myqueue.append(node.you)

解读:如果节点不为None ,创建队列(列表),node指向队列,向队列添加元素,
循环队列,拿出第一个元素,输出,如果节点左边有节点就添加到队列

你可能感兴趣的:(Scrapy)