# 課堂問答簡記: 2023-09-19 / 2023-09-26 ## 作業檢討 * [作業檢討-1](https://hackmd.io/@sysprog/ByN0NI8kp) * [作業檢討-2](https://hackmd.io/@sysprog/S11ooE4Rh) ## 模擬面試和策略 [為什麼還要來美國或者其他國家?其實就是機會成本](https://www.facebook.com/permalink.php?story_fbid=pfbid027DwfBYz9oKtPJSM3PyeMweZ51xk1jMvK4fbsuaUtpif4hMQVXRt7bSYhztm6EzZUl&id=660510468) ### 1. 如何將數學式轉為內部表示方式,便於保存和計算 將數學式子轉換成 prefix 表示,消除小括號及「先乘除後加減」等規則 再將轉換完的式子以 binary tree 保存 舉一個例子說明 `(3 - 4)* 4` 轉為 `*-344` 表示 (假設每個數值只佔一個字元) 再轉為 preorder binary tree ### 2. 身為 interviewer 該注意的事情 1. 不要以「面試官」等有居高臨下的口吻自稱,用「今天由我主持這場面試」較合適。 2. 今天如果提到關鍵字,很容易使面試者以該關鍵字背出題目的解答,可以繞個圈子,用應用題的方式。 3. 寫出題目的遞迴解之後,可以深入一步問出該遞迴在題目執行順序、深度或執行成本,或者舉出與本題目相關的另一題,如:pre-order 舉出 post-oreder,避免背答案且對程式沒有深入了解的情況。 ```c struct node { int data; struct node *left; struct node *right; }; struct node* new_node(int data){ struct node* node = (struct node*)malloc(sizeof(struct node)); node->data=data; node->left=NULL; node->right=NULL; return(node); }; // pre-order的順序即是 根 > 左子 > 右子 void printPre(struct node *node){ if(node == NULL) return; print(“%d”,node->data); printPre(node->left); printPre(node->right); } // post-order的順序即是 左子 > 右子 > 根 // 所以將下方print的部分調整至最後即可 void printPost(struct node *node){ if(node == NULL) return; printPre(node->left); printPre(node->right); print(“%d”,node->data); } int main(){ printPre(root); //printPost(root); } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up