二分木が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