中国大学MOOC-陈越、何钦铭-数据结构-2017秋 03-树2 List Leaves(25 point(s))
来源:互联网 发布:淘宝客qq分享群图模板 编辑:程序博客网 时间:2024/05/29 12:46
通过编号 知道
它的 位置信息,但 因为不是完全二叉树,所以并不能判断 他具体位置。
通过 左 右 编号 知道 每一个节点的 左右子树是谁。
因题目要求从上到下,从左到右,很符合层序遍历。
层序遍历的方法为:创建队列,遍历树。(前提为知道树的根节点)
因root结点不存在于任何左右子树中。故排除可得根节点。
(通过 编号总数和 - 结点左右子树编号总数和 = 根节点位置)
问题:1、不知道 节点的 父节点是谁
因题目所给信息全面,故不讨论问题1。
#include <stdio.h>#include <stdlib.h>struct BinTree{ int left; int right;};typedef struct BinTree *Tree;void addq(int queue[],int K,int *top,int *rear,int size);int deleteq(int queue[],int *top,int *rear,int size);int main(){ int i,j; int size; scanf("%d",&size); int orderSum=0,numSum=0; int root; char left[2],right[2]; Tree T = (Tree)malloc(size*sizeof(struct BinTree)); for(i=0;i<size;i++){ scanf("%s %s",&left,&right); if(left[0]=='-')(T+i)->left = -1;else (T+i)->left = atoi(left),numSum+= atoi(left); if(right[0]=='-')(T+i)->right = -1;else (T+i)->right = atoi(right),numSum+= atoi(right); orderSum+=i; } //构建队列 int queue[size+1]; int top=-1,rear=-1; int element; root = orderSum -numSum; addq(queue,root,&top,&rear,size); i=0; while(1){ element = deleteq(queue,&top,&rear,size); if(element==-1)break; if((T+queue[element])->left!=-1)addq(queue,(T+queue[element])->left,&top,&rear,size); if((T+queue[element])->right!=-1)addq(queue,(T+queue[element])->right,&top,&rear,size); if((T+queue[element])->right==-1&&(T+queue[element])->left==-1){ if(i!=0)printf(" "); printf("%d",queue[element]); i++; } }}void addq(int queue[],int K,int *top,int *rear,int size){ *rear = (*rear+1)%size; queue[*rear] = K;}int deleteq(int queue[],int *top,int *rear,int size){ if(*top==*rear)return -1; *top = (*top+1)%size; return *top;}
阅读全文
0 0
- 中国大学MOOC-陈越、何钦铭-数据结构-2017秋 03-树2 List Leaves(25 point(s))
- 中国大学MOOC-陈越、何钦铭-数据结构-2017秋 03-树1 树的同构(25 point(s))
- 中国大学MOOC-陈越、何钦铭-数据结构-2017秋03-树3 Tree Traversals Again(25 point(s))
- 中国大学MOOC-陈越、何钦铭-数据结构 List Leaves
- pat 03-树2 List Leaves(mooc 陈越、何钦铭-数据结构)
- 中国大学MOOC-陈越、何钦铭-数据结构-2017春
- 中国大学MOOC-陈越、何钦铭-数据结构-2015秋 03-树3 Tree Traversals Again (25分)
- 中国大学MOOC-陈越、何钦铭-数据结构-2017秋 02-线性结构4 Pop Sequence
- 【中国大学MOOC-陈越、何钦铭-数据结构-2017秋】最大子列和问题
- 中国大学MOOC-陈越、何钦铭-数据结构-2016秋2题
- 中国大学MOOC-陈越、何钦铭-数据结构 File Transfer
- 中国大学MOOC-陈越、何钦铭-数据结构 统计工龄
- 中国大学MOOC-陈越、何钦铭-数据结构-2015秋 01-复杂度2 Maximum Subsequence Sum (25分)
- 中国大学MOOC-陈越、何钦铭-数据结构-2016秋期中考试
- 中国大学MOOC-陈越、何钦铭-数据结构-2016秋期中考试
- 中国大学MOOC-陈越、何钦铭-数据结构-2016秋期末考试
- 中国大学MOOC-陈越、何钦铭-数据结构-2017春期中考试
- 中国大学MOOC-陈越、何钦铭-数据结构-2017春期末考试
- coursera网站课程视频无法播放?
- 深入理解Java中的final关键字
- MySQL之order
- SVAC&H264&AVS标准的去块滤波比较
- VMware 虚拟化编程(9) — VMware 虚拟机的快照
- 中国大学MOOC-陈越、何钦铭-数据结构-2017秋 03-树2 List Leaves(25 point(s))
- Xilinx IODELAY动态延迟的调用
- Linux进程间通信——信号
- extjs proxy post
- 利用window.location.href传值时,中文编码出现乱码问题?
- 用哈希code 和RGB值代表颜色
- Python的List.pop()方法
- ViewPager之上传报名信息图片
- 解决CentOS7虚拟机无法上网并设置CentOS7虚拟机使用静态IP上网