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

C++で三項式を二分木に変換する


このチュートリアルでは、三項式を二分木に変換するプログラムについて説明します。

このために、三項式が提供されます。私たちの仕事は、可能なさまざまなパス(選択肢)に応じて、与えられた式を二分木の形に変換することです。

#include<bits/stdc++.h>
using namespace std;
//node structure of tree
struct Node {
   char data;
   Node *left, *right;
};
//creation of new node
Node *newNode(char Data){
   Node *new_node = new Node;
   new_node->data = Data;
   new_node->left = new_node->right = NULL;
   return new_node;
}
//converting ternary expression into binary tree
Node *convertExpression(string str, int & i){
   //storing current character
   Node * root =newNode(str[i]);
   //if last character, return base case
   if(i==str.length()-1)
      return root;
      i++;
   //if the next character is '?',
   //then there will be subtree for the current node
   if(str[i]=='?'){
      //skipping the '?'
      i++;
      root->left = convertExpression(str,i);
      //skipping the ':' character
      i++;
      root->right = convertExpression(str,i);
      return root;
   }
   else return root;
}
//printing the binary tree
void display_tree( Node *root){
   if (!root)
      return ;
   cout << root->data <<" ";
   display_tree(root->left);
   display_tree(root->right);
}
int main(){
   string expression = "a?b?c:d:e";
   int i=0;
   Node *root = convertExpression(expression, i);
   display_tree(root) ;
   return 0;
}

出力

a b c d e

  1. C++のバイナリツリーでノードの先行ノードを事前注文する

    この問題では、二分木とノード値が与えられます。私たちのタスクは、ノードのプレオーダーの先行を印刷することです。 二分木 は、各ルートノードが最大2つの子ノードを持つことができる特殊なタイプのツリーです。 プレオーダートラバーサル ツリーのノードをトラバースする方法です。ここでは、最初にルートノードをトラバースし、次に左の子、次に右の子をトラバースします。 先行ノードの事前注文 ノードのプレオーダートラバーサルでノードの前に来るノードです。 問題を理解するために例を見てみましょう Input: 1 Output: 9 この問題を解決するには、 navie アプローチは、二分木の

  2. C++のバイナリツリーでノードの後続を事前注文する

    この問題では、二分木とノード値が与えられます。私たちのタスクは、ノードのプレオーダーサクセサを印刷することです。 二分木 は、各ルートノードが最大2つの子ノードを持つことができる特殊なタイプのツリーです。 プレオーダートラバーサル ツリーのノードをトラバースする方法です。ここでは、最初にルートノードをトラバースし、次に左の子、次に右の子をトラバースします。 後続ノードの事前注文 ノードのプレオーダートラバーサルでノードの隣に来るノードです。 問題を理解するために例を見てみましょう Input: 9 Output 0 Explanation: the preorder traver