c语言数组实现二叉树的问题,怎么把二叉树按顺序打印出来。

论坛 期权论坛 期权     
求真相真理   2018-4-26 14:06   4769   3
现在我用数组实现了二叉树,除了inorder,postorder,peroder,levelorder. 把二叉树按顺序打印(插入的顺序打印),请问可以实现吗,可以的请指教,不可以的话,能否告诉我另一种用数组顺序存储二叉树的方法,代码下面列出来了,可以直接复制调试。
#include data = data;
    node->left = node->right = NULL;
    return (node);
}

Node *insert(int arr[],Node *root, int i, int n)
{
    if(ileft = insert(arr,root->left,2*i+1,n);

        root->right = insert(arr, root->right,2*i+2,n);

    }

    return root;
}
int main()
{
    int arr[] = {19,18,17,16,15,14,13,12,11,21,22,23,24,25,26,27,28,29,30};
    int n = sizeof(arr)/sizeof(arr[0]);

    Node *root = insert(arr,root,0,n);
}展开
分享到 :
0 人收藏

3 个回复

倒序浏览
2#
丿艾瑞灬莉娅  3级会员 | 2018-4-30 01:48:43 发帖IP地址来自
你结构体定义的分明是链式存储结构,何来数组存储一说
3#
热心网友  15级至尊 | 2018-4-30 01:48:44 发帖IP地址来自
#include  #include  struct BiTNode *stack[100];  struct BiTNode//定义结构体  {  char data;  struct BiTNode *lchild,*rchild;  };  void later(struct BiTNode *&p) //前序创建树  {  char ch;  scanf("%c",&ch);  if(ch==' ')  p=NULL;  else  {  p=(struct BiTNode *)malloc(sizeof(struct BiTNode));  p->data=ch;  later(p->lchild);  later(p->rchild);  }  }  void print(struct BiTNode *p) //前序遍历(输出二叉树)  {  int i=-1;  while(1)  {  while(p!=NULL)  {  stack[++i]=p->rchild;/*printf("ok?\n");*/  printf("%c",p->data);  p=p->lchild;  }  if(i!=-1)  {  p=stack;  i--;  }  else  return;  }  }  void main()//主函数  {  struct BiTNode *p,*t;  later(p);  print(p);  }
4#
善良的喳喳会  2级吧友 | 2018-4-30 01:48:45 发帖IP地址来自
这是链式储蓄,没有数组储蓄一说,你把代码改形式试试。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP