バイナリツリーは完全なバイナリツリーであるかどうかを確認してください

説明:

完全なバイナリツリーは、すべてのノードがゼロまたは2つの子ノードを有するバイナリツリーとして定義されます。逆に、ある子ノードを有する完全なバイナリツリー内のどのノードが存在しません。 

例えば ​​:
いっぱい

 

バイナリツリーは、我々は、以下の例をテストする必要があります完全なバイナリツリーであるかどうかを確認するには -

バイナリツリーノードがNULLである場合は1)、それは完全なバイナリツリーです。
2)二分木のノードが空で左右のサブツリーを有する場合、それは定義により完全二分木です。
バイナリツリーノードが左右サブツリーた場合3)、それは定義により完全なバイナリツリーの一部です。左と右のサブツリーもバイナリツリーそのものであれば、この場合には再帰的に確認してください。
4)右と左サブツリーの全ての他の組み合わせでは、二分木は、完全二分木ではありません。

以下は、バイナリツリーは完全なバイナリツリーであるかどうかをチェックするための実装です。

クラスノード   
{ 
    int型データ、
    ノードは、右から左。
   
    ノード(INTのアイテム)   
    { 
        データ = 項目。 =右= nullを
    } 
} 
   
クラスBinaryTree   
{ 
    ノード根; 
       
    / * この関数チェックバイナリツリーがいっぱいであるかどうか* / 
    ブールisFullTree(ノードノード)
    { 
        // 場合は、空のツリー
        場合(ノード== NULL )を 
         返す 
           
        //もし葉ノード
        の場合(node.left == nullの && node.right == nullを返します 
           
        // 両方の左と右のサブツリーがnullでない場合は 
         、// インクルードが一杯になっ
        た場合((node.left!= nullの)&&(node.right!= nullの)) 
             リターン(isFullTree(node.left)&& isFullTree(node.right )); 
           
        // なしの作業であれば
        リターン はfalse ; 
    } 
   
       
    // ドライバプログラム
    パブリック 静的 ボイドメイン(文字列引数[])   
    {
        BinaryTreeツリー = 新しいBinaryTree(); 
        tree.root = 新しいノード(10 )。
        tree.root.left = 新しいノード(20 )。
        tree.root.right = 新しいノード(30 )。
        tree.root.left.right = 新しいノード(40 )。
        tree.root.left.left = 新しいノード(50 )。
        tree.root.right.left = 新しいノード(60 )。
        tree.root.left.left.left = 新しいノード(80 )。
        tree.root.right.right =新しいノード(70 )。
        tree.root.left.left.right = 新しいノード(90 )。
        tree.root.left.right.left = 新しいノード(80 )。
        tree.root.left.right.right = 新しいノード(90 )。
        tree.root.right.left.left = 新しいノード(80 )。
        tree.root.right.left.right = 新しいノード(90 )。
        tree.root.right.right.left = 新しいノード(80 )。
        tree.root.right.right.right = 新しいノード(90); 
           
        もし(tree.isFullTree(tree.root))
            System.out.print( "バイナリツリーがいっぱいです" )。 
        
            System.out.print(「バイナリツリーがいっぱいではありません」);  
    } 
} 
   
// このコードはMayank Jaiswalによって寄与されます  

 

おすすめ

転載: www.cnblogs.com/codingyangmao/p/11578439.html