師兄面試總結程式設計部分解答之四

2021-06-24 11:10:35 字數 1609 閱讀 3381

個人感覺樹的問題大部分都是用遞迴的思想。

首先定義樹節點結構體

typedef struct _treenode

}treenode,*treenodeptr;

構造搜尋二叉樹:

//根據輸入內容構造二叉查詢

treenodeptr constructtree()

else

}treenodeptr tmpnode = new treenode(c);

if(c < parentnode->val)

parentnode->left = tmpnode;

else

parentnode->right = tmpnode;

} return root;

}

1、樹的深度,廣度遍歷源**

//使用堆疊

//深度優先遍歷,非遞迴演算法實現

//**書寫熟練程度遠遠不夠,還要進行多次除錯,說明思路不清晰

void dfs(treenodeptr root)

if(top > 0)

}std::coutif(cur->left)

queue[head++] = cur->left;

if(cur->right)

queue[head++] = cur->right;

} std::cout<

2、二叉樹映象(劍指offer125頁)

//將給定樹,轉化為其映象,左右互換

void change(treenodeptr root)

void treemirror(treenodeptr root)

}//二叉樹映象遞迴實現

void treemirror_recu(treenodeptr root)

3、二叉樹中某一值的路徑(劍指offer 143頁)

//在二叉樹中找出和為某一值的所有路徑 

//找到路徑還是比較簡單的,關鍵是列印路徑怎麼去實現

bool isleaf(treenodeptr root)

void findpath(treenodeptr root, int sum,treenodeptr stack,int top)

std::coutstd::coutelse

return;

}

4、二叉搜尋樹後序遍歷序列(劍指offer 140頁)

//後序遍歷,這裡的順序是只根節點的遍歷順序,後序即為 左子樹-右子樹-根節點 順序完成遍歷

void lrd(treenodeptr root)

; int top = 0;

treenodeptr cur = root;

while(top != 0 || cur != null)

cur = stack[top-1];

if(cur->right == null || record[top - 1] == 2)//當前節點右子樹為空,或已經二次遍歷

else//遍歷右子樹

}}

網路程式設計總結 部分

socket 類 該類實現客戶端套接字,套接字指的是兩台裝置之間通訊的端點。構造方法 public socket string host,int port 建立套接字物件,並將其連線到指定的主機上的指定的埠號,如果指定的host是null,則相當於指定位址為回送位址 是本機回送位址 例子 socke...

部分面試題總結1

一 執行緒池的底層怎麼實現的?實現類為reentrantlock類,有幾個重要的方法 lock 加鎖,如果已經被獲取則等待 trylock 嘗試獲取鎖,獲取則返回true,否則false trylock long time,keepalivetime unit 在規定時間內獲取鎖 unlock 解鎖...

網上看到的騰訊面試筆試題部分解析

1 給乙個無重複整數陣列,找到其中包含最多連續數的子集,比如給 15,7,12,6,14,13,9,11,則返回 11,12,13,14,15 2 倒轉乙個字串,要求要在原字串上執行,並且效率最高,如輸入 abc 輸出 cba 輸入 abcd 輸出 dcba 3 給定乙個整數,求出其中0出現的次數。...