我需要弄清楚如何创建算术表达式树。
我可以只使用一组数字来创建简单的二叉树。下面有一个代码示例:
这是我的树的简单节点。
typedef struct _node {
    int key;
    struct _node *left, *right;
} node;
这就是我向二叉树添加新节点的方式:
node* add_tree(node *root, int val) {    
    if(NULL == root) {
        root = crnode(val);
    }    
    if (val < root->key) {
        if (NULL == root->left) {
            root->left = crnode(val);
        }
        else {
            add_tree(root->left, val);
        }
    }
    if (val > root->key) {
        if (NULL == root->right) {
            root->right = crnode(val);
        }
        else {
            add_tree(root->right, val);
        }
    }    
    return root;
}
这是我向树中添加新数字的主要功能和步骤:
int main(int argc, const char * argv[])
    {    
        node *tree = add_tree(NULL, 5);
        tree = add_tree(tree, 6);
        tree = add_tree(tree, 7);
        tree = add_tree(tree, 3);
        return 0;
    }
我的问题是:如何转换这段代码,我不仅可以使用数字,还可以使用运算符(例如 + - / *)。
例如,我需要将表达式 5 * (10 - 5) + 6 * 4 转换为树。我怎样才能做到?