Chinaunix首页 | 论坛 | 博客
  • 博客访问: 699356
  • 博文数量: 152
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1793
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-12 12:26
个人简介

相信自己,只有不想做的,没有做不到的。

文章分类

全部博文(152)

文章存档

2021年(1)

2015年(2)

2014年(74)

2013年(75)

分类: LINUX

2013-10-27 21:54:56

#include
#include

#define N 6

//构建一个二叉树的结构体,数据,左孩子,右孩子
typedef struct btree
{
int data;
struct btree *lchild;
struct btree *rchild;
}BTREE;

//创建一个二叉树的空节点,没有左右孩子
BTREE *space_node(int data)
{
BTREE *tree;

tree = (BTREE *)malloc(sizeof(BTREE));
tree->data = data;
tree->lchild = tree->rchild = NULL;


return tree;
}

//创建一个二叉树
BTREE *create_binarytree(int num)
{
BTREE *root;

//创建树的节点
root = space_node(num);

//在判断是这个节点是左孩子 还是右孩子
if(2 * root->data <= N)
{
root->lchild = create_binarytree(2 * root->data);
}

if(2 * root->data + 1 <= N)
{
root->rchild = create_binarytree(2 * root->data + 1);
}

在把填充的二叉树返回
return root;
}

//树的前序遍历
void PreOrder(BTREE *tree)
{
if(tree == NULL)
return;

printf("%d ",tree->data);
PreOrder(tree->lchild);
PreOrder(tree->rchild);


return;
}

//树的前序遍历
void InOrder(BTREE *tree)
{
if(tree == NULL)
return;


InOrder(tree->lchild);
printf("%d ",tree->data);
InOrder(tree->rchild);


return;
}

//树的后序遍历
void PostOrder(BTREE *tree)
{
if(tree == NULL)
return;


PostOrder(tree->lchild);
PostOrder(tree->rchild);
printf("%d ",tree->data);

return;
}

//树的层次遍历  运用上了队列技术
int NoOrder(BTREE *root)
{
    BTREE *temp;
       LinkQueue*q = create_empty_queue();
         
    EnterQueue(q,root);
 
while(!is_empty_queue(q))
{    
        temp = DeleteQueue(q);
    printf("%d ", temp->data);
    
    if(temp->lchild != NULL)
    {
    EnterQueue(q,temp->lchild);
    }
    
    if(temp->rchild != NULL)
    {
        EnterQueue(q,temp->rchild);
    }
    


}
return 0;
    
}



//主函数  实现 创建二叉树 前序 中序 后序 层次遍历来实现二叉树的遍历
int main(int argc, const char *argv[])
{
BTREE *root;


root = create_binarytree(1);
#if 0
PreOrder(root);
printf("\n");


InOrder(root);
printf("\n");

PostOrder(root);
printf("\n");
#endif
NoOrder(root);
printf("\n");
return 0;
}




阅读(4217) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~