gpt4 book ai didi

C程序插入/删除节点,运行困难

转载 作者:行者123 更新时间:2023-11-30 16:46:43 24 4
gpt4 key购买 nike

我有一个作业,我应该编写函数来插入/删除树结构,但我在实际正确执行程序时遇到困难。这是骨架代码:

typedef struct tree tree;

#define MAXWORD 26

struct tree{
struct tree *b4;
struct tree *after;
char word[MAXWORD];
};

void Insert(char *);
void Delete(char *);

#ifndef MAIN
extern tree *root;
#endif

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAIN 1
#include "tree.h"
void printtree();
tree *root=NULL;

main(int argc, char **argv)
{
tree *node;
char buf[MAXWORD];
extern tree *root;
tree *p;

while((scanf("%s",buf))>0)
Insert(buf);
while(argc-->1)
Delete(argv[argc]);

printf("Print binary tree in order\n");
if(root!=NULL)
printtree(root);
}

void printtree(tree *root){

if(root->b4!=NULL)
printtree(root->b4);
printf("Node is %s \n",root->word);
if (root->after!=NULL)
printtree(root->after);
}

输出应该类似于:

项目>:猫-| ./bintree abc xyz 2>/dev/null

abc

qwe

ASD

zxc

qwe

按顺序打印二叉树

节点为asd

节点是qwe

节点为zxc

项目>:

出于某种原因,尽管在编写插入函数并执行程序后,我无法成功运行程序的“按顺序打印树”部分,而不会成为无限循环,要求输入。有什么想法吗?

最佳答案

要打印二叉树,一般算法是(伪代码):

def inOrder_treeWalk(node) //define function that takes a node
if(node) //if the node is not Null
inOrder_treeWalk(node.left) //recursive call with left child
print node.key //print the key of this frame
inOrder_treeWalk(node.right) //recursive call with right child

编辑:使用你所拥有的

void printtree(tree *node){
if(node){
printtree(node->b4);
printf("Node is %s \n", node->word);
printtree(node->after);
}
}

关于C程序插入/删除节点,运行困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43621505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com