Given preorder and inorder traversal of a tree, construct the binary tree.
?
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { return buildTree(preorder, 0, preorder.length, inorder, 0, inorder.length); } private TreeNode buildTree(int[] preorder, int i, int length, int[] inorder, int j, int length2) { if (i>length-1 || j>length2-1) { return null; } int tmp = preorder[i]; int index = 0; for (int k = j; k < length2; k++) { if (inorder[k] == tmp) { index = k; break; } } int len = index-j; TreeNode root = new TreeNode(tmp); root.left = buildTree(preorder, i+1, i+len+1, inorder, j, index); root.right = buildTree(preorder, i+1+len, length, inorder, index+1, length2); return root; } }
?
Construct Binary Tree from Preorder and Inorder Traversal
原文:http://hcx2013.iteye.com/blog/2237966