Java输入先序遍历给二叉树
时间: 2024-01-23 16:49:35 浏览: 66
可以通过递归的方式构建二叉树,具体步骤如下:
1. 根据先序遍历的顺序,获取当前节点的值作为根节点的值。
2. 读取下一个输入值,如果该值小于根节点的值,则该值为左子树的根节点;否则为右子树的根节点。
3. 递归调用步骤 1 和步骤 2,构建左子树和右子树。
下面是 Java 实现代码:
```java
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public class Solution {
private int index = 0;
public TreeNode buildTree(int[] preorder) {
if (preorder == null || preorder.length == 0) {
return null;
}
return buildTreeHelper(preorder, Integer.MIN_VALUE, Integer.MAX_VALUE);
}
private TreeNode buildTreeHelper(int[] preorder, int lower, int upper) {
if (index >= preorder.length) {
return null;
}
int val = preorder[index];
if (val < lower || val > upper) {
return null;
}
index++;
TreeNode root = new TreeNode(val);
root.left = buildTreeHelper(preorder, lower, val);
root.right = buildTreeHelper(preorder, val, upper);
return root;
}
}
```
其中,index 表示当前遍历到的先序遍历数组的下标,lower 和 upper 表示当前节点的取值范围。在递归调用时,左子树的取值范围为 [lower, val),右子树的取值范围为 (val, upper]。
阅读全文