前序(Pre-order)
- 根-左-右
def preorder(self,root): if root: self.traverse_path.append(root.val) self.preorder(root.left) self.preorder(root.right)
中序(In-order)
- 左-根-右
def inorder(self,root): if root: self.inorder(root.left) self.traverse_path.append(root.val) self.inorder(root.right)
后序(Post-order)
- 左-右-根
def postorder(self,root): if root: self.postorder(root.left) self.postorder(root.right) self.traverse_path.append(root.val)
深度优先(DFS)
visited = set()
def dfs(node,visited):
if node in visited:
return
visited.add(node)
# 便利
for next_node in node.Children():
if not next_node in visited:
dfs(next_node,visited)
广度优先(BFS)
def bfs(graph,start,end):
queue = []
queue.append([start])
visited.add(start)
while queue:
node = queue.pop()
visited.add(node)
process(node)
nodes = generate_related_nodes(node)
queue.push(nodes) 
京公网安备 11010502036488号