`
iaiai
  • 浏览: 2216478 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 广度优先

 
阅读更多
就是按照正常顺序把tree打出来,假设有个tree是
       1
     /   \
    2     3
   / \   / \
  4   5  6  7
打印出来就是 1,2,3,4,5,6,7;
这个就是宽度优先

package org.iaiai.suanfa;

import java.util.LinkedList;

/**
 * 
 * <p>
 * Title: Node.java
 * </p>
 * <p>
 * E-Mail: 176291935@qq.com
 * </p>
 * <p>
 * QQ: 176291935
 * </p>
 * <p>
 * Http: iaiai.iteye.com
 * </p>
 * <p>
 * Create time: 2011-8-5
 * </p>
 * 
 * @author 丸子
 * @version 0.0.1
 */
public class Node {

	public int level = 0;
	public String path = " ";
	public LinkedList<Node> children = new LinkedList<Node>();
	public String value = " ";
	public String name = " ";

	/**
	 * 
	 * @param val
	 *            第几级
	 * @param name
	 *            名子
	 * @param parent
	 *            父级
	 */
	public Node(String val, String name, Node parent) {
		this.value = val;
		this.name = name;
		if (parent != null) {
			parent.addChild(this);
			path = parent.path + "   " + name;
		} else
			path = name;
	}

	public void addChild(Node child) {
		children.add(child);
	}

}


package org.iaiai.suanfa;

import java.util.LinkedList;
import java.util.List;

/**
 * 
 * <p>
 * Title: Main.java
 * </p>
 * <p>
 * E-Mail: 176291935@qq.com
 * </p>
 * <p>
 * QQ: 176291935
 * </p>
 * <p>
 * Http: iaiai.iteye.com
 * </p>
 * <p>
 * Create time: 2011-8-5
 * </p>
 * 
 * @author 丸子
 * @version 0.0.1
 */
public class Main {

	public static void main(String[] args) throws Exception {
		int n = 3;
		String[] str = { "1", "2", "3" };
		Node A = new Node("1", "A", null);
		Node B = new Node("2", "B", A);
		Node C = new Node("2", "C", A);
		new Node("3", "B1", B);
		new Node("x", "B2", B); // x为不显示
		new Node("x", "B3", B);
		new Node("3", "B4", B);
		new Node("x", "C1", C);
		new Node("3", "C2", C);
		new Node("x", "C3", C);
		new Node("3", "C4", C);
		new Node("3", "C5", C);

		List<Node> queue = new LinkedList<Node>();
		if (A.value.equals(str[A.level]))
			queue.add(A);
		while (queue.size() > 0) {
			Node cur = queue.remove(0);
			LinkedList<Node> children = cur.children;
			for (int i = 0; i < children.size(); i++) {
				if (children.get(i).value.equals(str[cur.level + 1])) {
					if (cur.level + 1 == n - 1)
						System.out.println(children.get(i).path);
					else {
						children.get(i).level = cur.level + 1;
						queue.add(children.get(i));
					}
				}
			}
		}
	}

}


输出:
引用

A   B   B1
A   B   B4
A   C   C2
A   C   C4
A   C   C5
分享到:
评论

相关推荐

    java广度优先搜索详细介绍.txt

    java广度优先搜索详细介绍.txt

    java 深度优先遍历、广度优先遍历、最短路径、最小生成树

    本文将深入探讨Java中实现的四个核心图算法:深度优先遍历(DFS)、广度优先遍历(BFS)、最短路径算法以及最小生成树算法。 首先,**深度优先遍历(DFS)**是一种用于遍历或搜索树或图的算法。它从根节点开始,尽...

    java实现的广度优先算法的例子

    java实现的广度优先算法的例子

    广度优先搜索(BFS)java实现

    广度优先搜索(BFS)java实现

    2015北大ACM-ICPC暑期课(广度优先搜索)

    **广度优先搜索(Breadth-First Search, BFS)**是一种在图或树中进行遍历的算法,常用于解决寻找最短路径、访问所有节点等问题。在ACM/ICPC(国际大学生程序设计竞赛)中,BFS是解决许多问题的关键技术之一,尤其在...

    图的邻接矩阵实现及广度优先搜索(JAVA)

    本文将深入探讨如何使用Java实现图的邻接矩阵以及如何在该数据结构上执行广度优先搜索(BFS)。 **邻接矩阵** 邻接矩阵是一种二维数组,它用来表示图中顶点之间的连接。如果图是无向的,邻接矩阵是对称的;如果图...

    二叉树的深度优先搜索与广度优先搜索实现

    二叉树的深度优先搜索与广度优先搜索实现 二叉树搜索是计算机科学中的一种常见的搜索算法,用于遍历二叉树中的所有节点。二叉树搜索可以分为深度优先搜索和广度优先搜索两种方式。本文将详细介绍二叉树的深度优先...

    Java实现图的深度优先遍历和广度优先遍历

    根据遍历方式的不同,图的遍历可以分为深度优先遍历(DFS)和广度优先遍历(BFS)。本文将深入探讨这两种遍历方法,并提供其在Java中的实现。 ### 图的深度优先遍历(DFS) 深度优先遍历是一种递归地访问图中的...

    Java实现深度优先、广度优先的网页爬虫

    本教程主要探讨如何使用Java编程语言实现深度优先和广度优先的网页爬虫。 首先,我们来理解深度优先搜索(DFS, Depth First Search)和广度优先搜索(BFS, Breadth First Search)的基本概念: 深度优先搜索是一种...

    通过广度优先遍历解决八数码问题

    通过广度优先遍历解决八数码问题 在计算机科学和人工智能领域中,对于搜索问题的解决方法有很多,广度优先遍历(Breadth-First Search,BFS)是一种常用的方法。八数码问题(Eight Puzzle)是一种经典的搜索问题,...

    Java实现利用广度优先遍历(BFS)计算最短路径的方法

    Java中的广度优先遍历(BFS)是一种用于遍历或搜索树或图的算法,其特点是先访问离根节点近的节点,然后再访问远的节点。在寻找图中两个节点间的最短路径问题上,BFS能有效地解决非负权图的最短路径问题,因为它总是...

    用Java实现二叉树的深度优先、广度优先遍历

    本篇文章将深入探讨如何使用Java来实现二叉树的深度优先遍历(DFS, Depth First Search)和广度优先遍历(BFS, Breadth First Search)。 **深度优先遍历** 是一种在图或树中搜索的方法,它尽可能深地探索树的分支...

    图数据结构以及深度优先和广度优先算法java实现

    深度优先搜索和广度优先搜索在许多问题中都有应用,例如检测图中的环、找到最短路径、查找连通组件等。在Java中,这两种算法的实现都需要考虑效率和空间复杂性,以适应不同的问题需求。通过理解这些概念并熟练使用...

    广度优先搜索学习五例之二(JAVA)

    【标题】:“广度优先搜索学习五例之二(JAVA)” 在计算机科学中,图算法是解决问题的关键工具之一,而广度优先搜索(Breadth-First Search, BFS)是一种用于遍历或搜索树或图的算法。本篇文章将重点讲解如何在...

    九宫问题的广度优先java实现

    标题 "九宫问题的广度优先java实现" 指示我们要解决的是九宫格问题,并且采用的是Java语言中的广度优先搜索策略。这是一种用于遍历或搜索树或图的算法,通常用于找出所有可能的解或找到最短路径。 描述 "这是一个...

    java实现广度优先搜索算法(BFS)

    通过不断执行这个过程,直到队列为空,我们就完成了广度优先搜索。 在示例代码中,我们以顶点0作为起始顶点调用bfs(0)方法进行遍历。最终的输出结果将会是按照广度优先搜索顺序遍历的顶点序列。

    图的创立数据结构对其进行深度优先遍历和广度优先遍历

    在本文中,我们将深入探讨图的数据结构以及如何对图进行深度优先遍历(DFS)和广度优先遍历(BFS)。首先,我们要理解图的基本概念。图是一种数据结构,用于表示对象之间的关系,其中的对象称为顶点或节点,而它们...

    图的广度优先遍历

    图的广度优先遍历(Breadth-First Search,简称BFS)是一种在图中寻找最短路径或遍历所有节点的算法。它从一个起始节点开始,沿着图的边逐层向外扩展,直到访问到所有节点为止。这个过程可以形象地比喻为在森林中,...

    深度优先和广度优先遍历及其java实现

    根据给定的信息,本文将详细解释深度优先遍历(Depth-First Search, DFS)与广度优先遍历(Breadth-First Search, BFS)这两种图的遍历算法,并给出相应的Java实现示例。 ### 深度优先遍历(DFS) #### 定义 深度...

    完整版基于java语言实现的广度优先算法多线程爬虫程序网络爬虫毕业设计报告共69页.pdf

    本文通过JAVA实现了一个基于广度优先算法的多线程爬虫程序。为何要使用多线程,以及如何实现多线程;系统实现过程中的数据存储;网页信息解析等。 通过实现这一爬虫程序,可以搜集某一站点的URLs,并将搜集到的...

Global site tag (gtag.js) - Google Analytics