題目:用log(n)演算法 找完全二叉樹最底層最右邊的結點
一顆二叉樹的總結點其實是知道的,設為n。
如上圖,總共有15個結點,那麼找15號結點只需從根結點開始,向右--向右--向右。
假設只有14個點,那麼向右--向右--向左
假設只有13個結點,那麼向右---向左---向右
…………
可以找到規律,總結點數即為最後乙個結點,也就是我們要找的結點。把此結點一直除以2,記錄其餘數。之後根據餘數來找。
例如15號結點,一直除以2,餘數分別為(15%2)1、(7%2)1、(3%2)1
例如14號結點,一直除以2,餘數分別為(14%2)0、(7%2)1、(3%2)1
…………
把這些餘數逆序,從根結點開始找,如果是1,則向右,如果是0則向左。
這樣演算法時間複雜度為log(n)。
找完全二叉樹最底層最右邊的結點
之前看到的一道題目。想了一下,借助佇列用層次遍歷。過程 1 把根結點入佇列 2 如果佇列非空,重複3 4,否則執行5。3 取出佇列頭結點,如果它有左子樹 右子樹,則子樹入佇列。4 遍歷此結點。5 結束遍歷。這樣做的話,演算法複雜度為o n 看阿里的一篇面經,說有log n 演算法,在網上搜了一下,總...
完全二叉樹結點數
222.完全二叉樹的節點個數 給你一棵完全二叉樹的根節點 root 求出該樹的節點個數。完全二叉樹的定義如下 在完全二叉樹中,除了最底層節點可能沒填滿外,其餘每層節點數都達到最大值,並且最下面一層的節點都集中在該層最左邊的若干位置。若最底層為第 h 層,則該層包含 1 2h 個節點。示例 輸入 ro...
二叉樹,完全二叉樹,滿二叉樹
二叉樹 是n n 0 個結點的有限集合,它或者是空樹 n 0 或者是由乙個根結點及兩顆互不相交的 分別稱為左子樹和右子樹的二叉樹所組成。滿二叉樹 一顆深度為k且有2 k 1個結點的二叉樹稱為滿二叉樹。說明 除葉子結點外的所有結點均有兩個子結點。所有葉子結點必須在同一層上。完全二叉樹 若設二叉樹的深度...