//ps和pe是前序遍歷的起始和終止位置,is和ie則是中序遍歷的起始和終止位置;
treenode* create(vector& preorder,vector& inorder,int ps,int pe,int is,int ie)
}//pos-is表示在中序遍歷中根節點左邊(左子樹)元素的個數;
//ie-pos表示在中序遍歷中根節點右邊(右子樹)元素的個數;
node->left = create(preorder,inorder,ps+1,ps+pos-is,is,pos-1);
node->right = create(preorder,inorder,pe-ie+pos+1,pe,pos+1,ie);
return node;}};
class solution
//ps和pe是前序遍歷的起始和終止位置,is和ie則是中序遍歷的起始和終止位置;
treenode* create(vector& inorder,vector& postorder,int is,int ie,int ps,int pe)
}//pos-is表示在中序遍歷中根節點左邊(左子樹)元素的個數;
//ie-pos表示在中序遍歷中根節點右邊(右子樹)元素的個數;
leetcode 105 前序,中序建樹
有簡潔版的。可是懶得看。自己寫的這個算是模擬手痠過程了吧,恩。感覺碰到這樣的例子,就是涉及長度加減的,都要拿小資料測一測。class solution int mid 1 for int i ll i rr i if inorder i root val root left find l 1,l m...
LeetCode105 前序 中序構造樹
根據一棵樹的前序遍歷與中序遍歷構造二叉樹。注意 你可以假設樹中沒有重複的元素。前序拿到根節點,在中序中找到該節點左邊的元素和右邊的元素,遞迴下去.public class offer 07 else if index inorderend 1 else return root 看了官方的遞迴解法,思...
LeetCode 105 前序和中序構建二叉樹
給定乙個二叉樹前序遍歷陣列a 124367,中序遍歷得到陣列b,421637。我們的任務是從這兩個結果中構造出原來二叉樹。根據前序遍歷的順序,可以知道陣列是先存放根,然後是左子樹,最後是右子樹。根據中序遍歷的順序,可以知道陣列是先放左子樹,然後是根,最後是右子樹。根據定義,前序遍歷陣列第乙個位置是根...