用数组中序遍历二叉树c语言,用c语言编,求一个二叉树用递归的方法来求前序遍历、中序遍历、后序? 爱问知识人...

#include

#include

#include

struct tree//声明树的结构

{

struct tree *left,*right;

int data;

};

typedef struct tree treenode;//声明新类型树结构

typedef treenode *b_tree;//声明二叉树链表//插入二叉树节点

b_tree insert_node(b_tree root, int node)

{

b_tree newnode ;//声明树根指针

b_tree currentnode;//声明目前节点指针

b_tree parentnode;//声明父节点指针//申请新节点的内存空间

newnode=(b_tree)malloc(sizeof(treenode));

newnode->data=node;//存入节点内容

newnode->right=NULL;//初始化右指针

newnode->left=NULL;if(root==NULL)return newnode;

else

{

currentnode=root;//存储目前节点指针

while(currentnode!=NULL)

{

parentnode=currentnode;//存储父节点指针

if(currentnode->data>node)//比较节点的数值大小

currentnode=currentnode->left;//左子树

else currentnode=currentnode->right;//右子树

}

if(parentnode->data>node)//将父节点和子节点做链接

parentnode->left=newnode;//子节点为父节点的左子树

else parentnode->right=newnode;//子节点为父节点的右子树

}

return root;//返回根节点的指针

}//建立二叉树

b_tree create_btree(int *data,int len)

{

b_tree root=NULL;

for(int i=0;ileft);//遍历左子树

coutright);//遍历右子树

}

}//主程序

void main()

{

b_tree root=NULL;//树根指针

int value;//暂存读入将要遍历的数值

int nodelist[20];

int index=0;

printf("请输入将要参与遍历的数值:

");

//读数值到数组中,

//这是一种不知道数组元素到底有几个的情况下的输入方法

scanf("%d",&value);

while(value!=0)

{

nodelist[index]=value;

index ;

scanf("%d",&value);

}

//建立二叉树

root=create_btree(nodelist,index);

//中序遍历

printf("中序遍历二叉树结果如下

");

in_order(root);

printf("

");

}。

全部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值