二叉树的创建和遍历

来源:互联网 发布:mac截图存在哪里 编辑:程序博客网 时间:2024/06/09 15:58

今天呢 主要想写点关于二叉树按层遍历

程程序功能:按层遍历二叉树

编程思想:按层遍历如果直接函数递归的话,会直接深入底层,达不到按层遍历的效果,所以需要我们学的另一种数据结构思想(队列)。

一   二叉树的定义

二  按层遍历二叉树

  1.  需要创建队列将头结点root入队

  2. 当队列不空时,获得队首元素root并出队遍历

  3. 当root->left左子女存在时入队,root->rght存在时入队

  4. 进入循环,直到队列为空遍历结束

三.   具体源码如下

#include <stdio.h>
#include <stdlib.h>
#include <queue>
#include<vector>
using namespace std;
typedef struct node
{
 int data;
 struct node *left;
 struct node *right;
}BTnode;
//创建二叉树
BTnode *CreateLink(int a[],int n);
//中序遍历二叉树
void printLink(BTnode *h);
//按层遍历二叉树
void Levelorder(BTnode *root);
int main(void)
{
 int a[10]={3,2,5,8,4,7,6,9,1,0};
 BTnode *root;
 root=CreateLink(a,10);
 printLink(root);
 printf("\n");
 Levelorder(root);
 return 0;
}
BTnode *CreateLink(int a[],int n)
{
 BTnode *root,*p,*c,*pa;
 root=(BTnode *)malloc(sizeof(BTnode));
 root->data=a[0];
 root->left=root->right=NULL;
 for(int i=1;i<n;i++)
 {
  p=(BTnode *)malloc(sizeof(BTnode));
  p->data=a[i];
  p->left=p->right=NULL;
  c=root;
  while(c!=NULL)
  {
   pa=c;
   if(p->data<pa->data)
    c=c->left;
   else
    c=c->right;
  }
  if(p->data<pa->data)
   pa->left=p;
  else
   pa->right=p;
 }
 return root;
}
void printLink(BTnode *root)
{
 if(root)
 {
  printLink(root->left);
  printf("%d\t",root->data);
  printLink(root->right);
 }
}
void Levelorder(BTnode *root)
{
 queue<BTnode *>que;
 que.push(root);
 while(!que.empty())
 {
  root=que.front();
  que.pop();
  printf("%d\t",root->data);
  if(root->left!=NULL)
   que.push(root->left);
  if(root->right!=NULL)
   que.push(root->right);
 }
}


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 柚皮糖的做法 透明柚子糖的做法 柚子糖的做法 胡萝卜糖 海带糖 柚的组词 马家柚的功效与作用 广丰马家柚价格 马家柚2018年市场价多少一斤 玄关柜上适合摆放什么 鞋柜上面带装饰架图片 床头柜上放什么 超市冷藏柜厂家 杭州浴室柜生产厂家 消防柜厂家 服装展示柜厂家 高压配电柜厂家 浴室柜厂家在哪里 风幕柜生产厂家 欧式浴室柜厂家 铁皮文件柜厂家直销 立式水果保鲜柜厂家 人保电话车险和柜台险的区别 综合柜员 银行柜员 柜员 银行柜员千万别辞职 银行柜员工资 银行柜员工作内容 柜员工作内容 2018银行柜员工作总结简短 银行柜员招聘条件 银行柜员工作 银行柜员 招聘 银行柜员考试 银行柜员面试自我介绍 银行柜员工资一般多少 柜员机转账多久到账 柜员机一天能取多少钱 柜员机转账限额 自动柜员机