递归--二叉树

[b][size=large][align=center]递归--二叉树[/align][/size][/b]


//======================================//
//程序名称:利用递归建立二叉树 //
//Written By HEWEI //
//2011 05 31 //
//======================================//
#include<iostream>
using namespace std;

#define MAX 20
//链表结构的声明
struct tree
{
struct tree *left;
int Data;
struct tree *right;
};
typedef struct tree treenode;
typedef treenode *b_tree;

int capacity;
//---------------------------------------//
//---------建立二叉树--------------------//
//---------------------------------------//
b_tree Create_Tree(int *nodelist,int position)
{
b_tree New; //建立新的节点

//递归的条件
if(position > capacity -1 )
return NULL;
else
{
//申请内存空间
New = new treenode[sizeof(treenode)];
//存入节点值
New->Data = nodelist[position];
New->left = Create_Tree(nodelist,2*position); //左树节点
New->right = Create_Tree(nodelist,2*position + 1); //右树节点
return New;
}
}

//-------------------------------------------//
//--------前序遍历二叉树---------------------//
//-------------------------------------------//
void preorder(b_tree pointer)
{
if(pointer != NULL)
{
cout <<pointer->Data << " ";
preorder(pointer->left);//打印左节点
preorder(pointer->right);//打印右节点
}
}

//-------------------------------------------//
//-----------存储数值------------------------//
//-------------------------------------------//
void Store_Data(int nMaxIndex,int *pArray)
{
int i ;
int temp;
for(i = 0; i <nMaxIndex; i++)
{
cout << "Please Input the Data => ";
cin >> temp;
pArray[i] = temp;
}
}

//-------------------------------------------//
//------------主函数-------------------------//
//-------------------------------------------//
int main(void)
{
b_tree root = NULL; //声明根节点
int i,index;
int value;
int nodelist[MAX];

//读取数值到数组中
cout <<"Please Input the capacity : ";
cin >> capacity;
cout << endl;
Store_Data(capacity,nodelist);
//建立二叉树
root = Create_Tree(nodelist,1);
//遍历二叉树
preorder(root);
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值