1. 程式人生 > 其它 >leetcode(9)二叉樹系列題目

leetcode(9)二叉樹系列題目

二叉樹的種類

滿二叉樹

如果一棵二叉樹只有度為0的結點和度為2的結點,並且度為0的結點在同一層上,則這棵二叉樹為滿二叉樹。
深度為k,有2^k-1個節點

完全二叉樹

在完全二叉樹中,除了最底層節點可能沒填滿外,其餘每層節點數都達到最大值,並且最下面一層的節點都集中在該層最左邊的若干位置。若最底層為第 h 層,則該層包含 1~ 2^(h-1) 個節點。

二叉搜尋樹

節點的值是有序的。

  • 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值
  • 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值
  • 它的左、右子樹也分別為二叉排序樹

平衡二叉搜尋樹

又被稱為AVL(Adelson-Velsky and Landis)樹,且具有以下性質:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。

C++中map、set、multimap,multiset的底層實現都是平衡二叉搜尋樹,所以map、set的增刪操作時間時間複雜度是logn,而unordered_map底層實現是雜湊表。

二叉樹的遍歷方式

深度優先遍歷:遞迴或迭代(藉助棧)

前序遍歷
中序遍歷
後序遍歷

廣度優先遍歷(層序遍歷):迭代(藉助佇列)