二叉树遍历框架
void traverse(TreeNode root){
if(root == null) return;
traverse(root.left);
traverse(root.rigth);
}
多叉树遍历框架
void traverse(Node root){
if(root == null) return;
for(Node child : root.children)
traverse(child);
}
图遍历框架
boolean[] visited;
void traverse(Graph graph,int v){
//防止走回头路进入闭环
if(visited[v]) return;
//前序遍历位置,标记节点v已访问
visited[v] = true;
for(TreeNode neighbor : graph.neighbors(v))
traverse(graph,neighbor);
}
或者如下
boolean[] visited;
void traverse(Graph graph,int v){
//前序遍历位置,标记节点v已访问
visited[v] = true;
for(int neighbor : graph.neighbors(v)){
if(!visited[neighbor]){
//只遍历没标记过得相邻节点
traverse(graph,neighbor);
}
}
}