式ツリーアルゴリズムを実装するC++プログラム
式ツリーは基本的に、式を表すために使用されるバイナリです。式ツリーでは、内部ノードは演算子に対応し、各リーフノードはオペランドに対応します。これは、後置式を入力として受け取り、順番にトラバースされる対応する式ツリーを生成する式ツリーアルゴリズムを実装するためのC++プログラムです。
アルゴリズム
Begin function construct_expression_tree(): Flag = 1 when it is operand. Flag = -1 when it is operator. S = suffix[0] means read the first operand from the expression. For i = 0 and until s != 0 Check symbol is operand or operator. Call function void inorder() for inorder traversal. Print the results. Increment i End.
サンプルコード
#include <iostream> using namespace std; struct n//node declaration { char d; n *l; n *r; }; char pf[50]; int top = -1; n *a[50]; int r(char inputch)//check the symbol whether it is an operator or an operand. { if (inputch == '+' || inputch == '-' || inputch == '*' || inputch == '/') return (-1); else if (inputch >= 'A' || inputch <= 'Z') return (1); else if (inputch >= 'a' || inputch <= 'z') return (1); else return (-100); } void push(n *tree)//push elements in stack { top++; a[top] = tree; } n *pop() { top--; return (a[top + 1]); } void construct_expression_tree(char *suffix) { char s; n *newl, *p1, *p2; int flag; s = suffix[0]; for (int i = 1; s!= 0; i++) { flag = r(s); if (flag == 1) { newl = new n; newl->d = s; newl->l = NULL; newl->r = NULL; push(newl); } else { p1 = pop(); p2 = pop(); newl = new n; newl->d = s; newl->l = p2; newl->r = p1; push(newl); } s = suffix[i]; } } void inOrder(n *tree)//perform inorder traversal { if (tree != NULL) { inOrder(tree->l); cout << tree->d; inOrder(tree->r); } } int main(int argc, char **argv) { cout << "Enter Postfix Expression : "; cin >>pf; construct_expression_tree(pf); cout << "\nInfix Expression : "; inOrder(a[0]); return 0; }
出力
Enter Postfix Expression : 762*+6+ Infix Expression : 7+6*2+6
-
AVLツリーを実装するためのC++プログラム
AVLツリーは自己平衡二分探索木であり、左右のサブツリーの高さの差がすべてのノードで複数になることはありません。 ツリーの回転は、AVLツリーの要素の順序を妨げることなく構造を変更する操作です。ツリー内で1つのノードを上に移動し、1つのノードを下に移動します。これは、ツリーの形状を変更したり、小さいサブツリーを下に移動したり、大きいサブツリーを上に移動したりして高さを低くしたりするために使用され、多くのツリー操作のパフォーマンスが向上します。回転の方向は、木のノードが移動する側に依存しますが、他の人は、どの子がルートの場所をとるかに依存すると言います。これは、AVLツリーを実装するためのC+
-
補間検索アルゴリズムを実装するC++プログラム
二分探索手法の場合、リストは等しい部分に分割されます。補間検索手法の場合、プロシージャは補間式を使用して正確な位置を見つけようとします。推定位置を見つけた後、その位置を使用してリストを分離できます。毎回正確な位置を見つけようとするため、検索時間が短縮されます。この手法では、アイテムが均一に分散されている場合、アイテムを簡単に見つけることができます。 補間検索手法の複雑さ 時間計算量:O(log 2 (log 2 n))平均的な場合、O(n)は最悪の場合(アイテムが指数関数的に分散される場合) スペースの複雑さ:O(1) Input − A sorted li