沒事講講二叉樹

2021-08-02 13:04:04 字數 1430 閱讀 7512

由於最近總是碰到問二叉樹的,這裡簡單做一下記錄,以供自己忘了的時候回頭看看其實二叉樹的概念倒是蠻簡單的,學計算機的應該都學過,無非就是自身儲存乙個值,儲存下乙個節點的索引,有乙個左子支和乙個右子支,這裡要注意,其本身儲存的值大於左子支值並且小於右子支值。

用js表示節點如下:

function node(value)
其實顯而易見的,其出現一定是為了解決問題,但是解決什麼問題呢?很簡單,當我們資料量巨大到乙個數量級時,我們仍然使用js的陣列或者物件來儲存的時候,所帶來的記憶體花銷是巨大的,不斷的拓展新的記憶體位址,總有乙個極限,並且,一般情況下由於內容的無序性,多數情況下會存在需要排序或者取最大值最小值的情況,當出現這種情況時,二叉樹就派上用上了。

其實一般意義上講無用,我工作這麼久是沒有接觸過需要用到的情況,但是,請注意,面試的時候是可以用來吹牛皮的,因為面試考演算法的時候,多數情況下為數字陣列,這種情況下的排序或者取部分值,如果你直接用迴圈來做的話,總會有些low,而且一般進一步講面試官會要求你優化,或者陣列很長的時候,你就需要它,沒錯。。。我就是面試碰到了,沒想到還經常出現。

function node(val) 

function bst()

bst.prototype

.insert = function (data) else

current = current.left

; } else

current = current.right

; }}}

};bst

.prototype

.show = function (node)

if (current.right)

};var bst = new bst();

bst.insert(5);

bst.insert(3);

bst.insert(7);

bst.insert(2);

bst.insert(4);

bst.insert(6);

bst.insert(10);

bst.insert(20);

bst.show();

其實還是蠻簡單的,其主要起到的作用是搜尋起來非常快,比如我們要取最小值

bst

.prototype

.showmin = function (node) else

};

取最大值

bst

.prototype

.showmax = function (node) else

};

由於二叉樹預先已經有了排序,並且資料結構固定,所有比一般的陣列排序要快很多,適合排列數字和字母的情況

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...

二叉樹,完全二叉樹,滿二叉樹

二叉樹 是n n 0 個結點的有限集合,它或者是空樹 n 0 或者是由乙個根結點及兩顆互不相交的 分別稱為左子樹和右子樹的二叉樹所組成。滿二叉樹 一顆深度為k且有2 k 1個結點的二叉樹稱為滿二叉樹。說明 除葉子結點外的所有結點均有兩個子結點。所有葉子結點必須在同一層上。完全二叉樹 若設二叉樹的深度...