本文共 1018 字,大约阅读时间需要 3 分钟。
用递归来连接
/** * 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) { if (preorder.length == 0 || inorder.length == 0) { return null; } int n = preorder.length; 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; }}
转载地址:http://qixyk.baihongyu.com/