题解 | #重建二叉树#
重建二叉树
https://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6
递归写法
import java.util.*; /** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { private static int index = 0; private TreeNode reConstructBinaryTree(int [] pre,int [] vin, int left, int right) { if (index == pre.length) return null; if (left > right) return null; for (int i = left; i <= right; i ++ ) { if (pre[index] == vin[i]) { TreeNode newNode = new TreeNode(pre[index ++ ]); newNode.left = reConstructBinaryTree(pre, vin, left, i); newNode.right = reConstructBinaryTree(pre, vin, i + 1 , right); return newNode; } } return null; } public TreeNode reConstructBinaryTree(int [] pre,int [] vin) { int len = pre.length; return reConstructBinaryTree(pre, vin, 0, pre.length - 1); } }