二分木が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であることを確認します。
-
Pythonで二分木がBSTであるかどうかをチェックするプログラム
二分木があるとしましょう。二分探索木かどうかを確認する必要があります。私たちが知っているように、BSTには次のプロパティがあります- 左側のサブツリーのすべてのノードが現在のノード値よりも小さい 右側のサブツリーのすべてのノードが現在のノード値よりも大きい これらのプロパティは、すべてのノードに対して再帰的に保持されます したがって、入力が次のような場合 その場合、出力はTrueになります これを解決するには、次の手順に従います- x:=ツリー要素の順序どおりの走査シーケンスのリスト xがソートされている場合、 trueを返す falseを返す 理解を深めるために
-
Pythonで二分木が完成しているかどうかをチェックするプログラム
二分木があるとしましょう。これが完全な二分木であるかどうかを確認する必要があります。完全な二分木でわかっているように、レベルはノードで埋められますが、最後のレベルのノードと最後のレベルのすべてのノードが可能な限り左にある可能性があります。 したがって、入力が次のような場合 その場合、出力はTrueになります これを解決するために、次の手順に従います- q:=両端キュー qの最後にルートを挿入 フラグ:=False qが空でない間、実行します temp:=qの左側から削除した後の要素 tempがnullの場合、 フラグ:=True