C 已知一棵完全二叉樹,求其節點的個數

2021-09-25 01:30:32 字數 1376 閱讀 3303

要求:時間複雜度低於o(n),n為這棵樹的節點個數

思路:因為滿樹的節點數2h−

12^ - 1

2h−1

如果乙個節點的右子樹的最左節點到達完全二叉樹的最後一層,則左子樹為滿樹,節點個數等於左子樹的節點數+遞迴求右子樹的節點數+本節點,如果此節點的右子樹的最左節點沒有到完全二叉樹的最後一層,則右子樹為滿樹,節點個數等於右子樹的節點數+遞迴求左子樹的節點+本節點。

注意:這裡**return (1 << (depth - curlevel)) + cbtnode(node->right, curlevel + 1, depth);不能寫成return 1 << (depth - curlevel) + cbtnode(node->right, curlevel + 1, depth);注意不能少一層括號,因為運算子的優先順序等問題。

4. 參考

leetcode 222. 完全二叉樹的節點個數 c++

已知一棵完全二叉樹,求其節點的個數

一棵完全二叉樹的節點總數

題意 已知一棵完全二叉樹,求其節點的個數 要求 時間複雜度低於o n n為這棵樹的節點個數。公式節點個數 2 n 1 如果是乙個完全二叉樹最左邊一定有節點求出二叉樹的高度h public static int mostleftlevel node node,int level return leve...

二叉樹 求一棵完全二叉樹節點的個數

已知一棵完全二叉樹,求其節點的個數 要求 時間複雜度低於o n n為這棵樹的節點個數 結論 滿二叉樹 高度為l,結點個數 2 l 1個 先遍歷左邊界,求出完全二叉樹的高度h 然後遍歷樹的右子樹的左邊界,看它到沒到最後一層,如果到了最後一層,那麼證明它的左子樹是滿的,高度是h 1 左子樹的結點數2 h...

如何判斷一棵二叉樹是完全二叉樹

嚴蔚敏那本教材上的說法 乙個深度為k,節點個數為 2 k 1 的二叉樹為滿二叉樹。這個概念很好理解,就是一棵樹,深度為k,並且沒有空位。首先對滿二叉樹按照廣度優先遍歷 從左到右 的順序進行編號。一顆深度為k二叉樹,有n個節點,然後,也對這棵樹進行編號,如果所有的編號都和滿二叉樹對應,那麼這棵樹是完全...