搴熻瘽涓嶅璇達紝鐩存帴涓婁唬鐮?/p>
package com.primeton.eos;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Stack;


public class DAG
{


public static Map createNode(String name)
{
HashMap node = new HashMap();
node.put("name", name);
node.put("child", new ArrayList());
return node;
}


public static void main(String[] args)
{
Map start = createNode("start");
Map node1 = createNode("node1");
Map node2 = createNode("node2");
Map node3 = createNode("node3");
Map node4 = createNode("node4");
Map node5 = createNode("node5");
Map end = createNode("end");

((List) start.get("child")).add(node1);
((List) start.get("child")).add(node2);

((List) node1.get("child")).add(node2);
((List) node1.get("child")).add(node3);

((List) node2.get("child")).add(node3);

((List) node3.get("child")).add(node4);
((List) node4.get("child")).add(node5);
((List) node5.get("child")).add(start);
((List) node5.get("child")).add(end);

System.out.println(checkChild(start));
}

public static Stack<String> stack = new Stack<String>();

public static boolean a = false;


public static boolean checkChild(Map cursor)
{

if (stack.contains(cursor.get("name")))
{
return false;
}
stack.push((String) cursor.get("name"));
List childs = (List) cursor.get("child");

if (childs != null)
{

for (int i = 0; i < childs.size(); i++)
{

if (!checkChild((Map) childs.get(i)))
{
return false;
}
}
}
stack.pop();
return true;
}
}

娉ㄦ剰錛宻tack涓笉鑳界洿鎺ユ斁cursor錛屽惁鍒欏氨浼氬嚭闂浜嗭紝鍛靛懙

]]>