2013年10月1日

Construct Binary Tree from Inorder and Postorder Traversal

摘要: 后序遍历的最后一个节点是根节点,在中序遍历中找到根节点所在的位置,将该vector分成左右两部分,然后在后序中找到和它们对应的部分,递归求出左右子树。 1 TreeNode *buildTree(vector &inorder, vector &postorder) { 2 // Start typing your C/C++ solution below 3 // DO NOT write int main() function 4 TreeNode *root = new TreeNode(0); 5 if(inorder.s... 阅读全文

posted @ 2013-10-01 21:49 waruzhi 阅读(281) 评论(0) 推荐(0) 编辑

Search in Rotated Sorted Array II

摘要: 在上题基础上,如果元素可以重复的话,那么就需要修改getPos,因为有可能直接得到的最小值不是正好在分界的地方。修改在第34行。 1 int findPos(int A[], int left, int right){ 2 if(left > right) 3 return -1; 4 int mid = (left+right)/2; 5 int result; 6 if(A[left] > A[mid]){ 7 result = findPos(A, left, mid-1); 8 if(result == -... 阅读全文

posted @ 2013-10-01 19:24 waruzhi 阅读(176) 评论(0) 推荐(0) 编辑

Search in Rotated Sorted Array

摘要: 首先利用二分查找的方法找到最小值,然后在以最小值为分界的两块分别进行二分搜索。 1 int findPos(int A[], int left, int right){ 2 if(left > right) 3 return -1; 4 int mid = (left+right)/2; 5 int result; 6 if(A[left] > A[mid]){ 7 result = findPos(A, left, mid-1); 8 if(result == -1) 9 return m... 阅读全文

posted @ 2013-10-01 19:11 waruzhi 阅读(200) 评论(0) 推荐(0) 编辑

导航