在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 送给学长毕业祝福语简短