在C ++中将三元表达式转换为二叉树
在本教程中,我们将讨论将三元表达式转换为二叉树的程序。
为此,我们将提供一个三元表达式。我们的任务是根据可能的各种路径(选择),以二叉树的形式转换给定的表达式。
示例
#include<bits/stdc++.h>
using namespace std;
//树的节点结构
struct Node {
char data;
Node *left, *right;
};
//创建新节点
Node *newNode(char Data){
Node *new_node = new Node;
new_node->data = Data;
new_node->left = new_node->right = NULL;
return new_node;
}
//将三元表达式转换为二叉树
Node *convertExpression(string str, int & i){
//存储当前字符
Node * root =newNode(str[i]);
//如果是最后一个字符,则返回基本情况
if(i==str.length()-1)
return root;
i++;
//如果下一个字符是“?”,
//然后将有当前节点的子树
if(str[i]=='?'){
//跳过“?”
i++;
root->left = convertExpression(str,i);
//跳过':'字符
i++;
root->right = convertExpression(str,i);
return root;
}
else return root;
}
//打印二叉树
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
热门推荐
10 祝福语年轻回复文案简短
11 宝宝祝福语诗意简短 古文
12 送师姐的祝福语简短
13 送礼祝福语男性生日简短
14 开业经典祝福语简短
15 對好友毕业祝福语简短
16 中班入学祝福语简短大全
17 迟到的过年祝福语简短
18 档案调动孩子祝福语简短