二叉樹學習筆記(未完待續)

摘要

二叉樹學習筆記(未完待續)。

博客

IT老兵驛站

前言

昨天(2019-11-07)複習紅黑樹,發現紅黑樹和二叉樹密不可分,所以這裏再複習一下二叉樹。

在大學的時候,這塊我很認真地學習了一遍。
大學畢業後,因爲找工作的緣故,我又多次對這塊進行過認真的學習,對於這塊,心裏還是比較清楚的。

現在這個筆記呢,既複習一下知識和概念,也回顧總結一下很多經歷過的事情。

正文

定義

參考維基百科

二叉查找樹(英語:Binary Search Tree),也稱爲二叉搜索樹、有序二叉樹(ordered binary tree)或排序二叉樹(sorted binary tree),是指一棵空樹或者具有下列性質的二叉樹:


若任意節點的左子樹不空,則左子樹上所有節點的值均小於它的根節點的值;
若任意節點的右子樹不空,則右子樹上所有節點的值均大於它的根節點的值;
任意節點的左、右子樹也分別爲二叉查找樹;
沒有鍵值相等的節點。

對於定義,這裏面會隱含一些理解上需要打通的問題,例如樹的高度和葉子的關係,這也是經常出現在面試題裏面的一個問題。今天事情有點多,先不做這塊的總結了。

遍歷

二叉樹的遍歷分爲前序遍歷、中序遍歷、後序遍歷,這個前中後是以輸出根結點關鍵字的順序來區別的。

note:二叉樹的遍歷涉及到了一個很關鍵的計算機算法,遞歸算法,對這個算法,原本一直有點畏懼,一直沒有搞清楚。在05年去OpenTV面試的時候,被這個算法給難住了,痛定思痛,那次面試失利之後,對這個算法進行了深度的學習和研究,後來在實際工作中,在合理的時機,也嘗試使用了這個算法,現在算是基本掌握了,所以很多事情,躲是躲不開的。

每個結點的內容(摘抄自《算法導論》,這裏用的是“結點”):

其中每個結點就是一個對象。除了 key 和衛星數據之外,每個結點還包含屬性 left、right 和 p,它們分別指向結點的左孩子、右孩子和雙親。如果某個孩子結點和父結點不存在,則相應屬性的值爲 NIL。

在這裏插入圖片描述
發現《算法導論》這裏居然印錯了,不知道家裏面那個紙版的,是不是也是這樣,這是第三版了,還會有這樣的錯誤,不應該。

總結

今天暫時寫到這裏,未完待續…

參考

https://zh.wikipedia.org/wiki/%E4%BA%8C%E5%85%83%E6%90%9C%E5%B0%8B%E6%A8%B9

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