leetcode - ノード222の完全な二進数

暴力:

クラスソリューション:
     デフ countNodes(自己、ルート:ツリーノード) - > int型:
         もし ないルート:
             リターン0
         リターン 1 + self.countNodes(root.left)+ self.countNodes(root.right)
実行時:92ミリ秒は、すべてのpython3の提出にユーザーの85.10パーセントを打ちます
メモリ消費量:21.6メガバイトには、すべてのpython3の提出にユーザの5.26パーセントを打ちます
 
 
完全なバイナリツリーの使用の性質:
クラスソリューション:
     デフ countNodes(自己、ルート:ツリーノード) - > int型:
         もし ないルート:リターン0 
        left_height = 0 
        left_node = ルート
        right_height = 0 
        right_node = ルート
         しばらくleft_node:
            left_node = left_node.left 
            left_height + = 1
         しばらくright_node:
            right_node = right_node.right 
            right_height+ = 1
         であれば left_height == right_height:
             戻り POW(2、left_height) - 1つの
         リターン 1 + self.countNodes(root.left)+ self.countNodes(root.right)
実行時:80ミリ秒は、すべてのpython3の提出にユーザーの98.16パーセントを打ちます
メモリ消費量:21.3メガバイトには、すべてのpython3の提出にユーザの5.26パーセントを打ちます
 
--2019.11.19

おすすめ

転載: www.cnblogs.com/taoyuxin/p/11889996.html