已知前序和中序求后序

1

public TreeNode createTree(String preOrder,String inOrder)
{
	if(preOrder.isEmpty())
	{
		return null;
	}
	
	char rootValue = preOrder.charAt(0);
	int rootIndex = inOrder.indexOf(rootValue);
	
	TreeNode root = new TreeNode(rootValue);
	
	root.setLeft(
		createTree(
			preOrder.substring(1,1+rootIndex),
			inOrder.substring(0,rootIndex)
		)
	);
	
	root.setRight(
		createTree(
			preOrder.substring(1+rootIndex),
			inOrder.substring(1+rootIndex)
		)
	);
	
	return root;
}

2

public String postOrder(String preOrder , String inOrder)
{
	if(preOrder.isEmpty())
	{
		return "";
	}
	
	char rootValue = preOrder.charAt(0);
	int rootIndex = inOrder.indexOf(rootValue);
	
	return preOrder(
		preOrder.substring(1,1+rootIndex),
		inOrder.substring(0,rootIndex)
	)+preOrder(
		preOrder.substring(1+rootIndex),
		inOrder.substring(1+rootIndex)
	)+rootValue;
	
}


你可能感兴趣的:(Java,编程技术)