二叉樹父子節點下標位置關係證實

最近在看一個堆排序的時候,發現其中一行代碼涉及到二叉樹的位置關係數據結構

一個節點的左節點是其父節點下標的2k+1,右節點是其父節點下標的2K+2。學習

因爲好久沒複習過數據結構,忽然很好奇這個結論的證實(雖然之前學習時已經證實過),而後寫一份博客再加深一下。畢竟這個技術不用就很容易忘記。排序

你們都知道二叉樹一個節點有2個子節點,右節點和左節點。所以,能夠將二叉樹每一層的數量看作一個公比爲2的等比數列。如 第一層 也就是根節點的數量是2^0=1,第二層2^1=2,第三層2^2=4,第k層2^k。。。。博客

等比數列的求和公式爲二叉樹

所以第k層的最後一個節點下標爲:2^k-1 第一個節點爲2^(k-1)技術

所以迴歸正文:數據

假設父節點爲第K層第M個節點,則其下標爲2^(k-1)+m;

其子節點就是第K+1層第2^(k)+(M-1)*2+1以及第2^(k)+(M-1)*2+2個

子左節點-父節點=2^(k)+(M-1)*2+1-2^(k-1)-M=2^(k-1)+M-1.而2^(k-1)+m爲父節點下標,也就是父節點下標+1

同理 子右節點-父節點=父節點下標+2

證實完成

二叉樹的子節點的下標是父節點下標的2倍+1 以及父節點下標的2倍+2

相關文章
相關標籤/搜索