簡體   English   中英

二叉樹中的級別順序插入

[英]Level order insertion in binary tree

我們必須在二叉樹中逐級插入元素,也就是說,對於一個數組:

a = {1,2,3,4,5,6}

1st level = [1]
2nd level = [2, 3]
3rd level = [4, 5, 6]

我已經制定了一個代碼,但每次都會導致 NULL 樹。

struct node
{
    int data;
    struct node* left;
    struct node* right;
};

node* create(int x)
{
    node* tmp;
    tmp=(struct node *)malloc(sizeof(struct node));
    tmp->data=x;
    tmp->left=NULL;
    tmp->right=NULL;
    return tmp;
}

struct node* tree;

void insert(struct node* tree, int* a, int start, int n)
{
    int left =2*start+1;
    int right=2*start+2;
    if(left>n || right>n)
        return;
    if(tree==NULL)
    {
        tree=create(a[start]);
    }
    if(tree->left==NULL && tree->right==NULL)
    {
        if(left<n)
            tree->left=create(a[left]);
        if(right<n)
            tree->right=create(a[right]);
    }
    insert(tree->left,a,left,n);
    insert(tree->right,a,right,n);
}

您正在按值傳遞tree insert返回后,調用insert的人仍然有一個NULL指針。 請參閱按引用傳遞與按值傳遞有什么區別? 對於一些背景。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM