2017/06/07 長威筆試總結

一、選擇題
1、 switch 的case中沒有break

第一次匹配後如果case語句沒有break,不再匹配後面的case,順序執行後面的代碼,直到遇見break或者default

2、 訪問控制符
這裏寫圖片描述

3、 char類型初始化
因爲char是16位的,採取的Unicode的編碼方式,所以char就有以下的初始化方式:
char c=’c’; //字符,可以是漢字,因爲是Unicode編碼
char c=十進制數,八進制數,十六進制數等等; //可以用整數賦值
char c=’\u數字’; //用字符的編碼值來初始化,如:char=’\0’,表示結束符,它的ascll碼是0,這句話的意思和 char c=0 是一個意思。

4、 java system.out.print(“5” + 2);輸出什麼
答案: 52

按照運算符從左至右的運算順序,因爲5是字符串,通過類型轉換之後將2轉換爲字符,然後輸出。

二、填空題
操作系統:
1、 死鎖的四個必要條件: 互斥條件,請求和保持條件,不可搶佔條件,循環等待條件。
2、 在一段時間內只允許一個進程訪問的資源稱爲 臨界資源
java:
3、java中有三種移位運算符

<<      :     左移運算符,num << 1,相當於num乘以2

>>      :     右移運算符,num >> 1,相當於num除以2

>>>     :     無符號右移,忽略符號位,空位都以0補齊
            忽略了符號位擴展,0補最高位  無符號右移運算符>>>

4、異或符號:^

& 與:    有0則爲0 , 或者1 11
| 或:    有1就爲1 , 或者0 0爲0
^ 非:    相同00 110 , 不同 01 101

三、簡答題
1、 樹的遍歷
二叉樹的遍歷
這裏寫圖片描述
前序: 先訪問根節點,再遍歷左子樹,最後遍歷右子樹;並且在遍歷左右子樹時,仍需先訪問根節點,然後遍歷左子樹,最後遍歷右子樹。
(上圖的前序遍歷:ABCDEFGHJI)
中序:先遍歷左子樹、然後訪問根節點,最後遍歷右子樹;並且在遍歷左右子樹的時候。仍然是先遍歷左子樹,然後訪問根節點,最後遍歷右子樹。
(上圖的中序遍歷:BCDAFEJHIG)
後序:先遍歷左子樹,然後遍歷右子樹,最後訪問根節點;同樣,在遍歷左右子樹的時候同樣要先遍歷左子樹,然後遍歷右子樹,最後訪問根節點。
(上圖的後序遍歷:DCBFJIHGEA)
一般樹的遍歷

2、 森林轉化爲二叉樹
樹轉換爲二叉樹
由於二叉樹是有序的,爲了避免混淆,對於無序樹,我們約定樹中的每個結點的孩子結點按從左到右的順序進行編號。
將樹轉換成二叉樹的步驟是:
(1)加線。就是在所有兄弟結點之間加一條連線
(2)抹線。就是對樹中的每個結點,只保留他與第一個孩子結點之間的連線,刪除它與其它孩子結點之間的連線;
(3)旋轉。就是以樹的根結點爲軸心,將整棵樹順時針旋轉一定角度,使之結構層次分明。
這裏寫圖片描述
森林轉化爲二叉樹
森林是由若干棵樹組成,可以將森林中的每棵樹的根結點看作是兄弟,由於每棵樹都可以轉換爲二叉樹,所以森林也可以轉換爲二叉樹。

將森林轉換爲二叉樹的步驟是:
(1)先把每棵樹轉換爲二叉樹;
(2)第一棵二叉樹不動,從第二棵二叉樹開始,依次把後一棵二叉樹的根結點作爲前一棵二叉樹的根結點的右孩子結點,用線連接起來。當所有的二叉樹連接起來後得到的二叉樹就是由森林轉換得到的二叉樹。
這裏寫圖片描述

二叉樹轉換爲樹

二叉樹轉換爲樹是樹轉換爲二叉 樹的逆過程,其步驟是:
(1)若某結點的左孩子結點存在,將左孩子結點的右孩子結點、右孩子結點的右孩子結點……都作爲該結點的孩子結點,將該結點與這些右孩子結點用線連接起來;
(2)刪除原二叉樹中所有結點與其右孩子結點的連線;
(3)整理(1)和(2)兩步得到的樹,使之結構層次分明。
這裏寫圖片描述

二叉樹轉化爲森林
二叉樹轉換爲森林比較簡單,其步驟如下:
(1)先把每個結點與右孩子結點的連線刪除,得到分離的二叉樹;
(2)把分離後的每棵二叉樹轉換爲樹;
(3)整理第(2)步得到的樹,使之規範,這樣得到森林。

⑤森林的先根遍歷和後根遍歷
森林的先根遍歷:A-B-C-D-E-F-G-H-J-I
和後根遍歷:BCDAFEJHIG

(聲明:部分內容轉載自http://blog.csdn.net/linraise/article/details/11745559

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章