diff --git a/blogs/Algorithm/剑指 Offer/二叉树相关.md b/blogs/Algorithm/剑指 Offer/二叉树相关.md new file mode 100644 index 0000000..18d0997 --- /dev/null +++ b/blogs/Algorithm/剑指 Offer/二叉树相关.md @@ -0,0 +1,35 @@ +--- +二叉树相关 +--- + +#### 目录 + +1. #### [07. 重建二叉树](https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/) + +#### [07. 重建二叉树](https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/) + +```java +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; + } + } + 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; + } +} +``` +