LZ可以参考下.
public static void main(String[] args)
{
String[] treeNodes = new String[3];
treeNodes[0] = "01";
treeNodes[1] = "0110";
treeNodes[2] = "01100";
findRoot(treeNodes);
treeNodes[0] = "0110";
treeNodes[1] = "01";
treeNodes[2] = "01100";
findRoot(treeNodes);
treeNodes[0] = "0110";
treeNodes[1] = "10";
treeNodes[2] = "00100";
findRoot(treeNodes);
}
public static String findRoot(String[] treeNodes)
{
//根节点一定是长度最短的节点
int nodeLength = Integer.MAX_VALUE;
int currentLength = 0;
String root = "";
for (int i = 0; i < treeNodes.length; i++)
{
currentLength = treeNodes[i].length();
if (currentLength < nodeLength)
{
root = treeNodes[i];
nodeLength = currentLength;
}
}
//所有的节点必须以根节点开头
int count = 0;
for (int i = 0; i < treeNodes.length; i++)
{
if (treeNodes[i].startsWith(root))
{
count++;
}
}
if (count == treeNodes.length)
{
System.out.println("Root is: " + root);
}
else
{
System.out.println("There is no root");
}
return root;
}