資料結構與演算法Java(七) 二叉樹基礎(上)

2021-09-13 12:21:06 字數 1629 閱讀 2638

相關節點關係:a是b的父節點;b是a的子節點;bcd是兄弟節點;e是根節點;沒有子節點的節點叫做葉子節點或葉節點,如ghijkl

節點的高度(從下往上)= 節點到葉子節點的最長路徑(邊數)

節點的深度(從上往下)= 根節點到這個節點所經歷的邊的個數

節點的層數= 節點的深度 + 1

樹的高度= 根節點的高度

1、滿二叉樹:葉子節點全都在最底層,除葉子結點外,每個節點都有左右兩個子節點

完全二叉樹:葉子節點都在最底下兩層,最後一層的葉子節點都靠左排列,並且除了最後一層,其它層的結點個數都要達到最大

2、二叉樹的儲存方式:

1)基於指標或者引用的二叉鏈式儲存法

2)基於陣列的順序儲存法,其中左子結點的下標為2*i;右子節點為2*i+1

3、二叉樹的遍歷:

前序遍歷:對於樹中的任意節點來說,先列印這個節點,然後再列印它的左子樹,最後列印它的右子樹

中序遍歷:對於書中的任意節點來說,先列印左子樹,然後再列印它本身,最後列印它的右子樹。(終須遍歷二叉查詢樹,可以輸出有序的資料序列,時間複雜度是o(n))

後序遍歷:對於樹中的任意節點來說,先列印它的左子樹,然後再列印右子樹,最後再列印節點本身

//個人的記憶方式是:三種順序對應節點本身,都按照先左後右

三種遍歷方法都是遞迴過程,時間複雜度是o(n)

前序遍歷的遞推公式:

preorder(r) = print r->preorder(r->left)->preorder(r->right)

中序遍歷的遞推公式:

inorder(r) = inorder(r->left)->print r->inorder(r->right)

後序遍歷的遞推公式:

postorder(r) = postorder(r->left)->postorder(r->right)->print r

《戀上資料結構與演算法》筆記(七) 二叉樹

二 二叉樹 三 leetcode演算法題 跳轉到目錄 跳轉到目錄 跳轉到目錄 跳轉到目錄 跳轉到目錄 節點的高度 從當前節點到最遠葉子節點的路徑上的節點總數。樹的深度 所有節點深度的最大值。樹的高度 所有節點高度的最大值。跳轉到目錄 跳轉到目錄 跳轉到目錄 跳轉到目錄 a 真二叉樹 跳轉到目錄 b ...

資料結構與演算法學習總結 七 二叉樹的概念

二叉樹 binary tree 由結點的有限集合構成 這個有限集合或者為空集 empty 或者為由乙個根節點 root 及兩顆互不相交 分別稱作這個根的左子樹 left bustree 和右子樹 right subtree 的二叉樹組成的集合。二叉樹可以是空集合,因此根可以有空的左子樹或右子樹,或者...

資料結構與演算法 (九)二叉樹

前序遍歷 中序遍歷 後序遍歷 遞迴實現 二叉搜尋樹 查詢樹 插入 刪除 查詢 平衡二叉搜尋樹 紅黑樹 遞迴樹 分析時間複雜度 leetcode 1 二叉樹的最近公共祖先 2 驗證二叉搜尋樹 思路 二叉搜尋樹 除了左子節點 節點 右子節點 節點 這個規則外,還有乙個規則是所有的左子樹節點,都應該小於該...