資料結構和演算法再看 二叉樹

2021-09-24 23:29:35 字數 687 閱讀 5572

0、樹是遞迴定義的

1,將一顆樹的元素放到乙個陣列裡邊是非常容易的,關鍵是放好之後能不能在陣列裡邊非常容易的找到他們的關係,換句話說就是已知乙個節點,我能不能非常容易的找到它的左兒子右兒子,甚至順著乙個節點很容易的找到它的父親。比如完全二叉樹可以用陣列表示,但是一般的二叉樹在用陣列儲存在很多時候會造成空間浪費,二叉樹更多用鍊錶來儲存

2、二叉樹最重要的操作就是遍歷,二叉樹的遍歷核心問題:二維結構的線性化

每個節點都有三次碰到的機會,第一次碰到就輸出節點內容為先序,第二次碰到訪問節點內容為中序,第三次碰到訪問節點內容為後序。節點的路線我們是根據遞迴的方式畫出來的,遞迴的實現最根本的還是借助堆疊來實現,所以我們可以通過堆疊來將遞迴的方式轉化為非遞迴的方式遍歷。

3、借助堆疊來實現中序非遞迴遍歷,訪問到最底部左子樹節點,然後退一步訪問右節點,再接著訪問到最底部左子樹節點。

第一次碰到節點的時候為push(t),此時訪問節點則為先序,第二次碰到節點的時候為pop(t),此時訪問節點即為中序,那後序?

4、有兩個遍歷序列,必須有乙個是中序遍歷才能確定乙個樹,只有前序或者後序不能確定。

資料結構和演算法 二叉樹

二叉樹 樹的每個節點最多只能有兩個子節點。樹的效率 查詢節點的時間取決於這個節點所在的層數,每一層最多有2n 1個節點,總共n層共有2n 1個節點,那麼時間複雜度為o logn 底數為2。二叉搜尋樹要求 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 若它的右子樹不空,則右子樹上所有結...

資料結構演算法 二叉樹

二叉樹資料結構 bintree.h include templateclass bintree template class treenode type data treenode lchild 左,右子樹 treenode rchild template class bintree void cr...

資料結構 樹和二叉樹

第一節 二叉樹的定義與基本操作 定義 我們把滿足以下兩個條件的樹型結構叫做二叉樹 binary tree 1 每個結點的度都不大於2 2 每個結點的孩子結點次序不能任意顛倒。由定義得出 二叉樹的每個結點只能含有0 1或2個孩子,且有左右之分。1 二叉樹的五種基本形態 2 二叉樹性質 性質1 二叉樹第...