一棵樹,它的每個節點最多只能有兩個子節點,此時就叫二叉樹。(我們一般在書中試題中見到的樹是二叉樹,但並不意味著所有的樹都是二叉樹。如果節點多於兩個,我們也稱之為多路樹)
可以看出: 滿二叉樹一定是完全二叉樹;完全二叉樹不一定是滿二叉樹。
如果我們給二叉樹加乙個額外的條件,就可以得到一種被稱作二叉查詢樹(binary search tree)的特殊二叉樹。
二叉查詢樹要求:若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; 它的左、右子樹也分別為二叉排序樹。【左邊下邊小,右邊上邊大】
ps:二叉樹很多,但對我們來說,在實際的應用中,二叉排序樹的應用比較多。
假設我們要為陣列 a = 構建乙個二叉排序樹,我們按順序逐個插入元素。
插入過程是這樣的:
如果是空樹,則建立乙個新節點,新節點作為根,因此以元素10構建的節點為該二叉查詢樹的根。
從這個過程我們可以總結出插入新元素的步驟:前序遍歷
中序遍歷
後序遍歷
層次遍歷刪除二叉排序樹的某個節點有三種情況:
飛行的架構師和奔跑的程式設計師
飛行的架構師和奔跑的程式設計師 關於程式設計師和架構師的討論很多,我想從不同的角度說下。當我剛進入軟體行業成為一名程式設計師時,我的理想就是成為一名架構師。架構師這個詞的英文叫 architect,原意是建築師,因為軟體行業參照借鑑了很多建築行業的概念,所以就借用這個詞。我是在學校讀書時知道架構師這...
程式設計師,架構師,軟體工程師的區別
程式設計師 僅僅會寫 不會寫文件 軟體工程師 會寫 也會寫一些專案的文件,如需求,詳細設計,系統整體方案設計 架構設計,使用者手冊,開發計畫等 架構師 一般需要從資深軟體工程師裡面提公升為架構師 主要負責大系統專案 如乙個1000萬使用者併發訪問的 伺服器 系統設計 的架構設計。如果是小型專案,一般...
架構師給程式設計師的一封信
某architect給他的engineering團隊的寫了一封信 from an architect to a programmer 在信中,結合他20多年在軟體圈的經驗,他為程式設計師提出了9條建議,去做乙個快樂 受人尊敬的程式設計師。酷殼 版主陳皓將這封信進行了翻譯,相信所有程式設計師可以從中學...