前序(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)