public class Code {
public static class Node {
public int value;
public Node left;
public Node right;
public Node(int v) {
value = v;
}
}
public static void fun(Node node) {
if (Objects.isNull(node)) {
return;
}
fun(node.left);
fun(node.right);
System.out.print(node.value + " ");
}
public static Node f(int[] pre, int L1, int R1, int[] in, int L2, int R2) {
if (L1 > R1) {
return null;
}
Node head = new Node(pre[L1]);
if (L1 == R1) {
return head;
}
int middle = L2;
while (in[middle] != pre[L1]) {
middle++;
}
head.left = f(
pre,
L1 + 1,
L1 + middle - L2,
in,
L2,
middle - 1
);
head.right = f(
pre,
L1 + middle - L2 + 1,
R1,
in,
middle + 1,
R2
);
return head;
}
public static void main(String[] args) {
Node node = new Node(1);
node.left = new Node(2);
node.left.left = new Node(4);
node.left.right = new Node(5);
node.right = new Node(3);
node.right.left = new Node(6);
node.right.right = new Node(7);
fun(node);
System.out.println("===================================");
int[] pre = {1, 2, 4, 5, 3, 6, 7};
int[] in = {4, 2, 5, 1, 6, 3, 7};
Node treeNode = f(pre, 0, pre.length - 1 , in, 0, in.length - 1);
fun(treeNode);
}
}
递归序:给定先序、中序,获取该树
最新推荐文章于 2024-08-01 15:05:06 发布