#yyds干货盘点#剑指 Offer 07. 重建二叉树

少年乘勇气,百战过乌孙。这篇文章主要讲述#yyds干货盘点#剑指 Offer 07. 重建二叉树相关的知识,希望能为你提供帮助。
题目
【#yyds干货盘点#剑指 Offer 07. 重建二叉树】输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
例如,给出

前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树:

3 / \\ 920 /\\ 157

限制:
0 & lt; = 节点个数 & lt; = 5000
答案
/** * Definition for a binary tree node. * public class TreeNode { *int val; *TreeNode left; *TreeNode right; *TreeNode(int x) { val = x; } * } */ class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { int n = preorder.length; if (n == 0) return null; int rootVal=preorder[0],rootIndex=0; for(int i=0; i< n; i++){ if(inorder[i]==rootVal){ rootIndex=i; break; }} //要使用这个方法,首先要import java.util.*; //Arrays.copyOfRange(T[ ] original,int from,int to) //将一个原始的数组original,从下标from开始复制,复制到上标to(不包括to),生成一个新的数组。TreeNode root=new TreeNode(rootVal); root.left = buildTree(Arrays.copyOfRange(preorder,1,1+rootIndex),Arrays.copyOfRange(inorder,0,rootIndex)); root.right = buildTree(Arrays.copyOfRange(preorder, 1 + rootIndex, n), Arrays.copyOfRange(inorder, rootIndex + 1, n)); return root; } }

#yyds干货盘点#剑指 Offer 07. 重建二叉树

文章图片


    推荐阅读