在c ++中的二进制树,无法弄清楚如何保存节点

时间:2017-02-26 15:56:13

标签: c++

    Node* binTree::insert(vector<Node>& vec, int index, Node* leaf) {
    Node* new_node = &vec[index];
    Node* left_leaf=NULL;
    Node* right_leaf=NULL;
    leaf = new_node;
    if (new_node->left == -1 || new_node->right == -1)
        return NULL;
    if (c == 'n')
        {
            root = new_node;
            c = 'y';
        }
    index = new_node->left;
    new_node->left_leaf = insert(vec, new_node->left, new_node->left_leaf);
    index = new_node->right;
    new_node->right_leaf = insert(vec, new_node->right, new_node->right_leaf);
    return NULL;
};

所以,我的想法是我应该创建一个如下所示的树:enter image description here

圆圈下方的数字是我通过向量访问的索引。在向量的每个空间上都有:左边(索引),右边(索引)和节点内部的数字,所有这些看似起作用,不起作用的是我连接树的方法。我无法弄清楚如何连接树。它似乎正确遍历(预订),但不知道从哪里开始...任何想法?递归步骤的想法也困扰我,我不知道在哪里返回实际的左指针

1 个答案:

答案 0 :(得分:0)

我不知道我是否正确理解了你的问题,但我们走了:

你知道的唯一节点是根,然后,如果你想去其他节点,你只需通过指针“找到自己的方式”(右和左)

另外,这是我在Pre-Order上的递归代码:

void pre_ordem(node *root)
{
    if(root!= NULL)
    {
        printf("%d - ",root->num);
        pre_ordem(root->left);
        pre_ordem(root->right);
    }
}