import java.util.ArrayList; import java.util.Arrays; public class Create { public TreeNode CreateTree(int[] preorder,int[] inorder) { if (preorder.length == 0 || inorder.length == 0) { return null; //前序 中序 长度都为0 返回空 } TreeNode root = new TreeNode(preorder[0]);//从前序中获取根节点。 int rootIndex = 0; //获取根节点在中序遍历中的位置 for (int i = 0; i < inorder.length; i++) { if (root.val == inorder[i]) { rootIndex = i; } } int[] Inorderleft = Arrays.copyOfRange(inorder, 0, rootIndex);//把中序遍历从根节点拆开左右两部分 这是左部分 int[] Inorderright = Arrays.copyOfRange(inorder, rootIndex + 1, inorder.length);//把中序遍历从根节点拆开 右部分 int[] Preorderleft= Arrays.copyOfRange(preorder,1,rootIndex);//先序遍历从第一个非根节点的起到根节点在中序中所对应的位置号分为左部分 int[] Preorderright=Arrays.copyOfRange(preorder,rootIndex,preorder.length);//右部分 root.left=CreateTree(Preorderleft,Inorderleft); root.right=CreateTree(Preorderright,Inorderright); return root; } }
时间: 2024-04-17 14:29:30 浏览: 29
java代码-import java.util.Scanner;
5星 · 资源好评率100%
您好!您的代码是用于根据前序遍历和中序遍历构建二叉树的函数。这个函数通过递归地构建左子树和右子树来创建整个二叉树。首先,它从前序遍历中获取根节点,然后在中序遍历中找到根节点的索引位置。然后,它将中序遍历拆分为左部分和右部分,并将前序遍历也相应地拆分为左部分和右部分。接下来,它递归地调用自身来构建左子树和右子树,并将其连接到根节点上。最后,它返回根节点。这样就完成了二叉树的构建。
如果您有任何关于这段代码的问题,请随时提问!
阅读全文