1. 程式人生 > 實用技巧 >LeetCode 222. 完全二叉樹的節點個數

LeetCode 222. 完全二叉樹的節點個數

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

Difficulty: 中等

給出一個完全二叉樹,求出該樹的節點個數。

說明:

的定義如下:在完全二叉樹中,除了最底層節點可能沒填滿外,其餘每層節點數都達到最大值,並且最下面一層的節點都集中在該層最左邊的若干位置。若最底層為第 h 層,則該層包含 1~2h個節點。

示例:

輸入: 
    1
   / \
  2   3
 / \  /
4  5 6

輸出: 6

Solution

Language: 全部題目

方法一:簡單粗暴的層序遍歷,BFS+佇列實現,不過效率不高。

# Definition for a binary tree node.
# class TreeNode:
#   def __init__(self, x):
#     self.val = x
#     self.left = None
#     self.right = None
​
class Solution:
  def countNodes(self, root: TreeNode) -> int:
    if not root: return 0
    queue, res = [root], 0
    
    while queue:
      size = len(queue)
      for i in range(size):
        node = queue.pop(0)
        if node.left:
          queue.append(node.left)
        if node.right:
          queue.append(node.right)
        res += 1
    return res