Primero en profundidad y en amplitud árbol de búsqueda

recorrido en profundidad del árbol contiene tres métodos, a saber:

  • Preorden de recorrido (alrededor de raíz)
  • Finde recorrido (raíz izquierda y derecha)
  • Orden posterior (alrededor de raíz)

Distinguir entre estos tres transversal sobre todo para ver la ubicación de la raíz

Y el recorrido primero en amplitud se utiliza principalmente cola, el nodo se almacena, a continuación, los datos leídos de forma recursiva

Vea a continuación la realización concreta del programa

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

# 搜索二叉树的建立
def createTree(root, val):
	newnode = TreeNode(val)
	if root == None:
		root = newnode
		return root

	current = root
	while current != None:
		back = current
		if val < current.val:
			current = current.left
		else:
			current = current.right
	if val < back.val:
		back.left = newnode
	else:
		back.right = newnode
	return root

# 深度优先之中序遍历
def inorder(root):
	if root != None:
		inorder(root.left)
		print(root.val, end='\t')
		inorder(root.right)
		
# 前序遍历
def preorder(root):
	if root != None:
		print(root.val, end="\t")
		preorder(root.left)
		preorder(root.right)

# 后序遍历
def postOrder(root):
	if root != None:
		postOrder(root.left)
		postOrder(root.right)
		print(root.val, end="\t")
		
# 广度优先遍历
def bfs(root):
	nodes = [root]
	result = []
	while nodes:
		node = nodes.pop()
		result.append(node.val)
		if node.left != None:
			nodes.insert(0, node.left)
		if node.right != None:
			nodes.insert(0, node.right)
	print(result)




root = None
nodeval = [10, 5, 15, 4, 6, 12, 17]
for val in nodeval:
	root = createTree(root, val)
bfs(root)
inorder(root)

salida:

[10, 5, 15, 4, 6, 12, 17]
4	5	6	10	12	15	17
[Finished in 0.1s]
Publicado 33 artículos originales · ganado elogios 1 · vistas 2590

Supongo que te gusta

Origin blog.csdn.net/orangerfun/article/details/105159108
Recomendado
Clasificación