222 完全二叉樹的結點個數

2022-05-17 07:47:18 字數 810 閱讀 4459

完全二叉樹和滿二叉樹的區別:如果二叉樹中除去最後一層節點為滿二叉樹,且最後一層的結點依次從左到右分布,則此二叉樹被稱為完全二叉樹

由於題中已經告訴我們這是一顆完全二叉樹,我們又已知了完全二叉樹除了最後一層,其他層都是滿的,並且最後一層的節點全部靠向了左邊。那我們可以想到,可以將該完全二叉樹可以分割成若干滿二叉樹和完全二叉樹滿二叉樹直接根據層高h計算出節點為2^h-1,然後繼續計算子樹中完全二叉樹節點。那如何分割成若干滿二叉樹和完全二叉樹呢?對任意乙個子樹,遍歷其左子樹層高left,右子樹層高right,相等左子樹則是滿二叉樹,否則右子樹是滿二叉樹

1/**

2* definition for a binary tree node.

3* struct treenode

8* };9*/

10class

solution

17int left=countlevel(root->left);

18int right=countlevel(root->right);

19if(left==right)

2023

else

2427

2829}30

int countlevel(treenode*root)

3138

return

level;39}

40 };

view code

222 完全二叉樹的節點個數

要求複雜度小於o n 一提到複雜度小於o n 就應該想到二分法。一開始想到的是對倒數第二行用二分法,但是要儲存倒數第二行的結點需要層次遍歷,複雜度是o n 所以就要從根結點開始每一層都用一次二分法,複雜度就是o d 2 o logn 2 每一層的二分法的目的是找到最後一層的最後乙個結點在目前這個結點...

222 完全二叉樹的節點個數

給出乙個完全二叉樹,求出該樹的節點個數。說明 完全二叉樹的定義如下 在完全二叉樹中,除了最底層節點可能沒填滿外,其餘每層節點數都達到最大值,並且最下面一層的節點都集中在該層最左邊的若干位置。若最底層為第 h 層,則該層包含 1 2h 個節點。示例 輸入 1 2 3 4 5 6 輸出 6 defini...

222 完全二叉樹的節點個數

1.使用遞迴來實現 class solution 2.根據完全二叉樹的性質簡化遍歷次數 功能 判斷最後一層第index個索引是否存在 root 二叉樹根節點 index 判斷最後一層索引為index的節點是否存在,索引範圍是 1,2 depth depth 倒數第二層的深度,這是因為滿二叉樹最後一層...