class?Solution?{
????/**
?????*?@param?Integer[]?$preorder
?????*?@param?Integer[]?$inorder
?????*?@return?TreeNode
?????*前序遍歷?第一個是根節(jié)點,在中序數(shù)組中找到根節(jié)點,則中序數(shù)組中左邊的是左子樹的元素堕伪,右邊是右子樹的元素
?????*然后根據(jù)左右子樹的元素個數(shù)也可以將前序數(shù)組分為左右子樹的前序數(shù)組该窗,以此類推褐荷。則可以用遞歸來實現(xiàn)腻菇。
?????*/
????function?buildTree($preorder,?$inorder)?{
????????if(empty($inorder)){
????????????return?null;
????????}
????????$root?=?array_shift($preorder);
????????$qf?=?array_search($root,$inorder);
????????$left_inorder?=?array_slice($inorder,0,$qf);
????????$right_inorder?=?array_slice($inorder,$qf+1);
????????$left_preorder?=?array_slice($preorder,0,count($left_inorder));
????????$right_preorder?=?array_slice($preorder,count($left_inorder));
????????$left?=?$this->buildTree($left_preorder,$left_inorder);
????????$right?=?$this->buildTree($right_preorder,$right_inorder);
????????$root?=?new?TreeNode($root);
????????$root->left?=?$left;
????????$root->right?=?$right;
????????return?$root;
????}
}