【指令碼化CSS】CSS概覽
阿新 • • 發佈:2021-12-06
今天依然是二叉樹,懷疑人生的一天,會畫二叉樹,但是用程式碼就不會,感嘆智商
看了很多遍題解這才終於搞明白,以後畫圖預演一定好好總結規律再寫程式碼
class Solution { public: TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) { TreeNode* root ; root = build(preorder,inorder,0,inorder.size()-1,0,inorder.size()-1); return root; } // pre_left和pre_right是當前子二叉樹在前序遍歷中的位置 TreeNode* build(vector<int>& preorder,vector<int>& inorder,int left,int right,int pre_left,int pre_right){ int inorder_root = left; int i; //下面題解使用的是map,大大縮短時間 for(i = left; i<=right; i++){ if(inorder[i] == preorder[pre_left]){ inorder_root = i; break; } } if(left>right){ return nullptr; } TreeNode* root = new TreeNode(); root->val=preorder[pre_left]; root->left=build(preorder,inorder,left,inorder_root-1,pre_left+1,pre_left+inorder_root-left); root->right=build(preorder,inorder,inorder_root+1,right,pre_left+inorder_root-left+1,pre_right); return root; } };