POJ 3784 java
时间: 2023-12-31 21:23:58 浏览: 127
根据提供的引用内容,这是一个关于二叉树遍历的问题。具体来说,给定二叉树的前序遍历和中序遍历,需要求出二叉树的后序遍历。
以下是一个Java实现的例子:
```java
import java.util.Scanner;
class Node {
char value;
Node left;
Node right;
public Node(char value) {
this.value = value;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int t = scanner.nextInt();
while (t-- > 0) {
int n = scanner.nextInt();
String preOrder = scanner.next();
String inOrder = scanner.next();
Node root = buildTree(preOrder, inOrder);
postOrder(root);
System.out.println();
}
scanner.close();
}
private static Node buildTree(String preOrder, String inOrder) {
if (preOrder.length() == 0) {
return null;
}
char rootValue = preOrder.charAt(0);
int rootIndex = inOrder.indexOf(rootValue);
Node root = new Node(rootValue);
root.left = buildTree(preOrder.substring(1, rootIndex + 1), inOrder.substring(0, rootIndex));
root.right = buildTree(preOrder.substring(rootIndex + 1), inOrder.substring(rootIndex + 1));
return root;
}
private static void postOrder(Node root) {
if (root == null) {
return;
}
postOrder(root.left);
postOrder(root.right);
System.out.print(root.value);
}
}
```
这段代码首先读取输入的测试用例数量t,然后依次读取每个测试用例的节点数量n、前序遍历和中序遍历的字符串。接下来,通过递归构建二叉树,并使用后序遍历输出结果。
阅读全文