1. 程式人生 > 其它 >【指令碼化CSS】CSS概覽

【指令碼化CSS】CSS概覽

今天依然是二叉樹,懷疑人生的一天,會畫二叉樹,但是用程式碼就不會,感嘆智商

看了很多遍題解這才終於搞明白,以後畫圖預演一定好好總結規律再寫程式碼


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;
    }
};