在 C 中使用链表和横向树按预序创建家谱

问题描述

我想使用链表创建一个家谱,并按顺序横切树。

规则1:每个节点都应该包含姓名、性别、存储丈夫/妻子信息的指针和存储孩子信息的指针。 规则2:将孩子信息的指针数量设置为家庭中存在的最大孩子数。任何未使用的链接都应该指向 NULL。 配偶的姓名应显示在此人的姓名旁边。

我的程序的输出应该是:May (F) & Fuk (M) - Mee (F) & Keong (M) - Min (F) & Heng (M) - Rui (F) - Ning (F) - 锯 (F)-

我遇到了字符数据中字溢出的问题。谁能帮我吗? 这是我的代码:

#include <stdio.h>
#include <stdlib.h>
struct BinTreeNode {
    char data;
    struct BinTreeNode *left;
    struct BinTreeNode *right;
};

struct BinTreeNode *initBinTreeNode(char data);

void visit(char data);

void preorder(struct BinTreeNode *node);
void postorder(struct BinTreeNode *node);
void inorder(struct BinTreeNode *node);

int main(void){
    struct BinTreeNode *root,*parent1,*parent2;
  /* growing the tree */
    root = initBinTreeNode('May (F) & Fuk (M)');
    root->left  = initBinTreeNode('Mee (F) & Keong (M)');
    root->right = initBinTreeNode('Saw (F)');
    parent1 = root->left;
    parent1->left  = initBinTreeNode('Min (F) & Heng (M)');
    parent1->right = initBinTreeNode('Ning (F)');
    parent2 = parent1->left;
    parent2->left  = initBinTreeNode('Rui (F)');
  /* traverse and print tree */
    printf("\nPreorder traversal:\t");  preorder(root);
    
    return(0);  }
void preorder(struct BinTreeNode *node){
  if (node){    /* if Node exists */
    visit(node->data);
    preorder(node->left);
    preorder(node->right);
  }
}

void visit(char data){
  printf("%c ",data);
}

struct BinTreeNode *initBinTreeNode(char data){
  struct BinTreeNode *temp;
  temp = (struct BinTreeNode *) 
    malloc(sizeof(struct BinTreeNode));
  temp->data  = data;
  temp->right = NULL;
  temp->left  = NULL;
  return(temp);
}

解决方法

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

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

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