非递归队列方法建立二叉树
2012-10-13 22:03
246 查看
非递归队列方法建立层次二叉树
思想:要认清rear和front的关系
1:函数刚开始rear== 0是要在while中第一次起作用,rear == front 表示栈空.
2:看函数体,当rear在自增后卫奇数时,此时q[front]的右孩子已经处理完,跟紧其后的是front++,
表明下一个处理的节点为当前处理节点的兄弟节点或者堂兄弟节点,反正就是往右的下一个节点.
3:算法用到了数组指针,每个元素存放已输入节点的地址,其中rear和front的关系为front + 2 = rear
4:因为队列的性质,所以从函数课已看出来[front]为当前急需出对的节点,[rear]为当前继续出队节点的左孩子或右孩子
bitree *q[MAX];
bitree *creat()
{
int x;
int front,rear;
bitree *root,*s;
root = NULL;
s = NULL;
front = 1;
rear = 0;
printf("\n\t\t请输入,结束输入-99,叶节点输入0:");
scanf("%d",&x);
while(x != -99)
{
if(x != 0)
{
{
s = new bitree;
s->data = x;
s->lchild = NULL;
s->rchild = NULL;
}
rear = rear + 1;
q[rear] = s;
if(rear == 1)
root = s;
else
{
if(s && q[front])
{
//因为数组指针总存放的规律的节点地址,所以front一次处理就行了
if(rear % 2 == 0)
{
q[front]->lchild = s;
}
else
{
q[front]->rchild = s;
}
}
if(rear%2 == 1)front = front + 1;
}
}
printf("\n\t\t请输入,结束输入-99,叶节点输入0:");
scanf("%d",&x);
}
return root;
}
思想:要认清rear和front的关系
1:函数刚开始rear== 0是要在while中第一次起作用,rear == front 表示栈空.
2:看函数体,当rear在自增后卫奇数时,此时q[front]的右孩子已经处理完,跟紧其后的是front++,
表明下一个处理的节点为当前处理节点的兄弟节点或者堂兄弟节点,反正就是往右的下一个节点.
3:算法用到了数组指针,每个元素存放已输入节点的地址,其中rear和front的关系为front + 2 = rear
4:因为队列的性质,所以从函数课已看出来[front]为当前急需出对的节点,[rear]为当前继续出队节点的左孩子或右孩子
bitree *q[MAX];
bitree *creat()
{
int x;
int front,rear;
bitree *root,*s;
root = NULL;
s = NULL;
front = 1;
rear = 0;
printf("\n\t\t请输入,结束输入-99,叶节点输入0:");
scanf("%d",&x);
while(x != -99)
{
if(x != 0)
{
{
s = new bitree;
s->data = x;
s->lchild = NULL;
s->rchild = NULL;
}
rear = rear + 1;
q[rear] = s;
if(rear == 1)
root = s;
else
{
if(s && q[front])
{
//因为数组指针总存放的规律的节点地址,所以front一次处理就行了
if(rear % 2 == 0)
{
q[front]->lchild = s;
}
else
{
q[front]->rchild = s;
}
}
if(rear%2 == 1)front = front + 1;
}
}
printf("\n\t\t请输入,结束输入-99,叶节点输入0:");
scanf("%d",&x);
}
return root;
}
相关文章推荐
- 根据前序跟中序遍历的结果建立二叉树——迭代和递归的方法
- 用递归方法建立二叉树
- 用递归方法建立二叉树
- 用递归方法建立二叉树
- 用递归方法建立二叉树
- 二叉树的建立、三种(递归、非递归)遍历方法
- java递归方法建立搜索二叉树,具备查找关键字,插入新节点功能
- 层次遍历二叉树的方法(递归,队列,指针)
- 递归和非递归方法建立二叉树
- 用非递归方式实现二叉树的前、中、后三种遍历方法
- 二叉树的建立以及三种遍历方式的递归、非递归的实现
- 数据结构之 非递归方法先序遍历二叉树
- 二叉树的建立 前序中序后序递归遍历及非递归遍历
- python3中分别用递归,栈,和队列打印出目录中所有文件的绝对路径的三种方法
- 二叉树的三种遍历的方法(递归和非递归完整版)
- 数据结构学习——非递归方法遍历二叉树
- 第6章 树和二叉树——递归方法先序、中序、后序遍历二叉链表表示的二叉树
- 二叉树的创建、销毁、各种递归、循环遍历方法(可运行测试)
- 二叉树的三种遍历方法(递归和非递归)
- 二叉树第K层节点个数 -- 采用递归和非递归方法