package Recursion;
public class BuildTree_105 {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
// 105. Construct Binary Tree from Preorder and Inorder Traversal
public TreeNode buildTree(int[] preorder, int[] inorder) {
return recur(preorder,0,preorder.length-1,inorder,0,inorder.length-1);
}
private TreeNode recur(int[] preorder,int pStart,int pEnd,int[] inorder,int iStart,int iEnd){
// 遞歸結束條件
while(pStart>pEnd||iStart>iEnd) {
return null;
}
TreeNode treeNode=new TreeNode(preorder[pStart]);
int index=0;
while(inorder[iStart+index]!=preorder[pStart]) {
index++;
}
treeNode.left=recur(preorder,pStart+1,pStart+index,inorder,iStart,iStart+index-1);
treeNode.right=recur(preorder,pStart+index+1,pEnd,inorder,iStart+index+1,iEnd);
return treeNode;
}
}
105. Construct Binary Tree from Preorder and Inorder Traversal
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.