微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将二叉树转换为二叉决策图

如何解决如何将二叉树转换为二叉决策图

struct TreeNode {
    int num;
    TreeNode* left;
    TreeNode* right;
};

TreeNode* cons_tree(int num,TreeNode *l,TreeNode *r) {
    TreeNode* tmp;
    tmp = new TreeNode;
    tmp->val = num;
    tmp->left = l;
    tmp->right = r;
    return tmp;
}

TreeNode* ordered_insertion_tree(int num,TreeNode *t) {
    if(t == NULL) {
        return cons_tree(num,NULL,NULL);
    }
    else if(num < t->val) {
        t->left = ordered_insertion_tree(num,t->left);
        return t;
    }
    else {
        t->right = ordered_insertion_tree(num,t->right);
        return t;
    }
}

Binary Decision Diagram (BDD)

Binary Search Tree (BST)

上面的代码展示了如何创建 BST。但是,我希望我的程序像 BDD 图像中显示的真值表一样。

两张图的区别:

  1. BDD 图像中的虚线代表“0”,实线代表用户输入中的“1”。
  2. 对于 BST,当用户输入小于根节点时,它代表左树。
  3. BDD 的根节点是字符串“x1”,BST 的根节点是 int 8。

例如,如果用户输入字符串“000”、“011”、“110”和“111”,这些叶节点将具有字符串“1”。

***输入将被附加到名为值的字符串向量中。因此,values[0] 代表“000”等等。 ***

我的问题是:

  1. 我应该如何重写ordered_insertion_tree 函数?最初我使用 int 来比较值,但现在它已更改为 std::string,我不知道如何进行比较。
  2. 如何更改节点的值?从表示第一个整数的“x1”到表示 n 个整数的“x2”...“xn”,最后到表示真值表的 0/1。

感谢阅读!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。