222 完全二叉樹的節點個數

2021-10-10 19:18:23 字數 906 閱讀 7401

1.使用遞迴來實現

class solution 

};

2. 根據完全二叉樹的性質簡化遍歷次數

* 功能: 判斷最後一層第index個索引是否存在

* root: 二叉樹根節點

* index:判斷最後一層索引為index的節點是否存在, 索引範圍是[1, 2^depth]

* depth:倒數第二層的深度, 這是因為滿二叉樹最後一層的節點數等於 2^depth

*/bool is_exist(treenode* root, int index, int depth)

else

depth -= 1;

}return node != nullptr;

}int countnodes(treenode* root)

// start - 1為最後一層節點數

int ret = (1 << depth_prev) - 1 + start - 1;

return ret;}};

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 完全二叉樹的節點個數

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