Leetcode练习(Python):二分查找类:第222题:完全二叉树的节点个数:说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

题目:
完全二叉树的节点个数:说明:  完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。  
思路:
一看到二叉树,想到了递归,使用暴力法遍历所有节点。
暂时没有想到使用二分查找的地方,之后再做补充。
程序:
# 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
        left_tree = root
        left_tree_node = 0
        rigth_tree = root
        right_tree_node = 0
        while left_tree:
            left_tree = left_tree.left
            left_tree_node += 1
        while rigth_tree:
            rigth_tree = rigth_tree.right
            right_tree_node += 1
        if left_tree_node == right_tree_node:
            return 2 ** (left_tree_node) - 1
        else:
            return self.countNodes(root.left) + self.countNodes(root.right) + 1
原文地址:https://www.cnblogs.com/zhuozige/p/12875141.html