Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

二分木がCでBSTであるかどうかをチェックするプログラム?


二分木は、ノードごとに2つの子ノードがあるツリーデータ構造です。 2つの子ノードは、左子と右子と呼ばれます。

BSTは、左側のサブツリーにルートよりも小さい値のノードが含まれ、右側のサブツリーにルートよりも大きい値のノードが含まれるツリー構造です。

ここでは、二分木がBSTであるかどうかを確認します-

これを確認するには、バイナリツリーのBST条件を確認する必要があります。ルートノードの場合、左の子のチェックはルートよりも小さく、右の子は子が存在するツリーのすべてのノードのルートよりも大きくする必要があります。

二分木がBSTであるかどうかを確認するプログラム

#include<bits/stdc++.h>
#include<iostream>
using namespace std;
class node {
   public:
      int data;
   node* left;
   node* right;
   node(int data) {
      this->data = data;
      this->left = NULL;
      this->right = NULL;
   }
};
int isBSTUtil(node* node, int min, int max);
int isBST(node* node) {
   return(isBSTUtil(node, INT_MIN, INT_MAX));
}
int isBSTUtil(node* node, int min, int max) {
   if (node==NULL)
      return 1;
   if (node->data < min || node->data > max)
      return 0;
   return
      isBSTUtil(node->left, min, node->data-1) && isBSTUtil(node->right, node->data+1, max);
}
int main() {
   node *root = new node(8);
   root->left = new node(3);
   root->right = new node(10);
   root->left->left = new node(1);
   root->left->right = new node(6);
   if(isBST(root))
      cout<<"The given tree is a BST";
   else
      cout<<"The given tree is Not a BST";
   return 0;
}

出力

The given tree is a BST

コードの説明

上記のコードはBSTをチェックします。 mainメソッドは、ツリーを作成し、isBST()メソッドを呼び出します。このメソッドは、isBSTuntil()メソッドを使用して、左右の子がBSTルールに従っているかどうかをチェックし、形成されたサブツリーもBSTであることを確認します。


  1. Pythonで二分木がBSTであるかどうかをチェックするプログラム

    二分木があるとしましょう。二分探索木かどうかを確認する必要があります。私たちが知っているように、BSTには次のプロパティがあります- 左側のサブツリーのすべてのノードが現在のノード値よりも小さい 右側のサブツリーのすべてのノードが現在のノード値よりも大きい これらのプロパティは、すべてのノードに対して再帰的に保持されます したがって、入力が次のような場合 その場合、出力はTrueになります これを解決するには、次の手順に従います- x:=ツリー要素の順序どおりの走査シーケンスのリスト xがソートされている場合、 trueを返す falseを返す 理解を深めるために

  2. Pythonで二分木が完成しているかどうかをチェックするプログラム

    二分木があるとしましょう。これが完全な二分木であるかどうかを確認する必要があります。完全な二分木でわかっているように、レベルはノードで埋められますが、最後のレベルのノードと最後のレベルのすべてのノードが可能な限り左にある可能性があります。 したがって、入力が次のような場合 その場合、出力はTrueになります これを解決するために、次の手順に従います- q:=両端キュー qの最後にルートを挿入 フラグ:=False qが空でない間、実行します temp:=qの左側から削除した後の要素 tempがnullの場合、 フラグ:=True