/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/**
*@param preorder : A list of integers that preorder traversal of a tree
*@param inorder : A list of integers that inorder traversal of a tree
*@return : Root of a tree
*/
public TreeNode buildTree(int[] preorder, int[] inorder) {
if(preorder.length==0||inorder.length==0){
return null;
}
return bTree(preorder,0,preorder.length-1,inorder,0,inorder.length-1);
}
public TreeNode bTree(int []preorder,int i,int j,int []inorder,int k,int l){
int index;
TreeNode root=new TreeNode(preorder[i]);
index=find(inorder,preorder[i]);
if(i==j){
return root;
}
if(index==k){
root.left=null;
}else{
root.left=bTree(preorder,i+1,i+index-k,inorder,k,index-1);
}
if(index==l){
root.right=null;
}else{
root.right=bTree(preorder,i+index-k+1,j,inorder,index+1,l);
}
return root;
}
public int find(int []arr,int k){
for(int i=0;i<arr.length;i++){
if(arr[i]==k){
return i;
}
}
return -1;
}
}根据树的先序和中序遍历输出树(java)
最新推荐文章于 2022-02-25 10:22:45 发布
本文详细介绍了如何通过中序和前序遍历的数组来构建二叉树,包括定义节点类、实现构建树的函数、找到特定元素的位置等关键步骤。
1296

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



