利用JAVA写一个根据一个二叉树的前序和中序输出一个二叉树
时间: 2024-09-06 17:03:18 浏览: 35
根据二叉树前序遍历和中序遍历的结果输出后序遍历(java)
在 Java 中,我们可以利用递归的方式来构建二叉树,给定前序遍历(Preorder)和中序遍历(Inorder),因为前序遍历的第一个元素通常是根节点,而中序遍历可以帮助我们确定左子树和右子树。以下是编写此类函数的一个示例:
```java
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
public class Solution {
public TreeNode buildTree(String[] preorder, String[] inorder) {
if (preorder == null || inorder == null || preorder.length == 0 || inorder.length == 0) {
return null;
}
// 前序遍历的第一个元素作为根节点
int rootVal = Integer.parseInt(preorder[0]);
TreeNode root = new TreeNode(rootVal);
// 找到根节点在中序遍历中的索引
int index = Arrays.asList(inorder).indexOf(rootVal);
// 分别构建左子树和右子树
root.left = buildTree(Arrays.copyOfRange(preorder, 1, 1 + index),
Arrays.copyOfRange(inorder, 0, index));
root.right = buildTree(Arrays.copyOfRange(preorder, 1 + index + 1, preorder.length),
Arrays.copyOfRange(inorder, index + 1, inorder.length));
return root;
}
}
```
这个 `buildTree` 函数首先检查输入是否有效,然后从前序遍历中取出第一个元素创建根节点。接着,它找到该节点在中序遍历中的位置,并通过递归分别构建左子树和右子树。
阅读全文