【问题标题】:Creating node in Binary search function在二分查找功能中创建节点
【发布时间】:2012-11-26 10:20:42
【问题描述】:
typedef struct node
{
    int data;
    struct node *next,*prev;
}harsha;

void create_leaf(harsha **pnode,int value)
{
    harsha *temp=*pnode;
    if(*pnode==NULL)
    {
        *pnode=(struct node *)malloc(sizeof(struct node));
        if(!(*pnode))
        {
            printf("mem not allocated");
            exit(0);
        }
        (*pnode)->data=value;
        (*pnode)->prev=NULL;
        (*pnode)->next=NULL;
    }
    else
    {
        if(value>(temp->data))
        create_leaf(&(temp->next),value);
        else if(value<temp->data)
        create_leaf(&(temp->prev),value);
    }
}

这是我为将新节点插入二叉搜索树而编写的函数。我的代码是否有任何问题,因为我的 Inorder、Preorder 和 Postorder 遍历无法正常工作。

【问题讨论】:

  • 究竟是什么问题?解决“不能正常工作”非常困难......
  • void Inorder_traversal(harsha *pnode) { if(pnode!=NULL) { Inorder_traversal(pnode-&gt;prev); printf("%d\t",pnode-&gt;data); Inorder_traversal(pnode-&gt;next); } else return; } 是我的 Inorder 函数,如果输入是 5 4 8。它正在打印 4 5 8,后面跟着一些大数字,程序停止工作,没有转到其他函数 postorder 和 Preorder

标签: c binary-search-tree


【解决方案1】:

放一些printf看是不是指针匹配。从您的输出中我可以看出,您在 8 上有一些不为空的指针。 :) 将 &pnode 发送到函数时,您是否已将 pnode 初始化为空?我想就是这样。 :)

【讨论】:

    猜你喜欢
    • 2019-04-19
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 2019-05-16
    相关资源
    最近更新 更多