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);
}
}
递归序:给定先序、中序,获取该树
最新推荐文章于 2025-12-13 12:19:21 发布
这段代码定义了一个Node类,用于创建二叉树结构。fun方法进行先序遍历,f方法根据预序和中序遍历数组重建二叉树。在main方法中,首先手动构建了一棵树并进行先序遍历,然后使用给定的预序和中序遍历数组重建并打印一棵树。
241

被折叠的 条评论
为什么被折叠?



