从异构大括号初始化器列表创建一棵树

问题描述

在学习 C++ 时,我决定制作一个二叉树。仅简化为类定义和构造函数,它看起来像这样:

class Tree
{
public:
        class Node
        {
        public:
                Node(void) = default;
                virtual ~Node(void) = default;
        };
    
        class NullNode : public Node
        {
        public:
                NullNode(void) = default;
                ~NullNode(void) override = default;
        };
    
        class ValueNode : public Node
        {
        public:
                ValueNode(int value);
                ValueNode(int value,Node *left,Node *right);
                ~ValueNode(void) override;
        };
            
        // Constructors
        Tree(void);
        Tree(Node *root);
        ~Tree(void);
};

构建一个列表,我必须像这样创建它:

Tree tree(new Node(new Node(1),new Node(3),2),new Node(new Node(5),new Node(7),6),4);

感觉非常难看。我希望能够像这样构造列表:

Tree tree({{{1},{3},2},{{5},{7},6},4});

我一直在研究大括号括起来的初始化列表,但我发现的大多数文本倾向于将它们更多地视为同一时间的可变长度列表,而不是不同类型的最大长度列表。我正在寻找的可能吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)