function TreeNode(x) { this.val = x; this.left = null; this.right = null; } function reConstructBinaryTree(pre, vin) { // write code here var root=new TreeNode(pre[0]);//前序的第一个数定为根 var length=pre.length; if(length==1){ root.left=null; root.right=null; return root; } //找到中序中根的位置 var rootval=root.val; var i; for(i=0;i<length;i++){ if(rootval==vin[i]) break; } //创建左子树 if(i>0){ var pr=new Array(); var ino=new Array(); for(var j=0;j<i;j++){ pr[j]=pre[j+1]; ino[j]=vin[j]; } root.left=reConstructBinaryTree(pr,ino); }else{ root.left=null; } //创建右子树 if(length-i-1>0){ var pr=new Array(); var ino=new Array(); for(var j=i+1;j<length;j++){ ino[j-i-1]=vin[j]; pr[j-i-1]=pre[j]; } root.right=reConstructBinaryTree(pr,ino); }else{ root.right=null; } return root; }
转载于:https://my.oschina.net/u/3161974/blog/883872