03-树1. List Leaves (25)
来源:互联网 发布:虚拟社交网络弊大于利 编辑:程序博客网 时间:2024/05/20 20:57
来源:http://www.cnblogs.com/wgqtmac/p/4404630.html
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 10 typedef struct TreeNode { int data; int tLeft; int tRight; struct TreeNode *left; struct TreeNode *right; struct TreeNode *next; } tNode, *pNode; typedef struct TreeQuene { pNode front; pNode rear; }tQuene, *pQuene; pQuene CreateQuene(); void AddQ(pQuene q, pNode node); pNode DeleteQ(pQuene q); //void OrderTraver(int root, pNode tPointArray[]); int IsEmptyQuene(pQuene q); int main() { int lines, i; int left, right; char strleft, strright; pNode tPointerArray[MAXSIZE]; pNode tPointer; scanf("%d", &lines); int flag[MAXSIZE] = { 0 }; for (i = 0; i < lines; i++) { tPointer = (pNode)malloc(sizeof(tNode)); getchar(); scanf("%c %c", &strleft, &strright); if (strleft == '-') { left = -1; } else { left = (int)(strleft - '0'); flag[left] = 1; } if (strright == '-') { right = -1; } else { right = (int)(strright - '0'); flag[right] = 1; } tPointer->data = i; tPointer->tLeft = left; tPointer->tRight = right; tPointer->left = NULL; tPointer->right = NULL; tPointerArray[i] = tPointer; } int rootIndex; for (i = 0; i < lines; i++) { if (flag[i] != 1) { rootIndex = i; } } //create Tree for (i = 0; i < lines; i++) { if (tPointerArray[i]->tLeft != -1) { tPointerArray[i]->left = tPointerArray[(tPointerArray[i]->tLeft)]; } else { tPointerArray[i]->left = NULL; } if (tPointerArray[i]->tRight != -1) { tPointerArray[i]->right = tPointerArray[(tPointerArray[i]->tRight)]; } else { tPointerArray[i]->right = NULL; } } //root index pNode root = tPointerArray[rootIndex]; //levelOrderTravelsal pQuene quene = CreateQuene(); AddQ(quene, root); int flagg = 1; while (!IsEmptyQuene(quene)) { pNode node = DeleteQ(quene); if (!(node->left) && !(node->right)) { if (flagg) { printf("%d", node->data); flagg = 0; } else { printf(" %d", node->data); } } if (node->left) { AddQ(quene, node->left); } if (node->right) { AddQ(quene, node->right); } } return 0; } pQuene CreateQuene() { pQuene q = (pQuene)malloc(sizeof(tQuene)); q->front = NULL; q->rear = NULL; return q; } void AddQ(pQuene q, pNode node) { if (!(q->rear)) { q->rear = node; } else { q->rear->next = node; q->rear = node; } if (!(q->front)) { q->front = node; } } pNode DeleteQ(pQuene q) { pNode temp = q->front; if (temp) { q->front = q->front->next; return temp; } else { return NULL; } } int IsEmptyQuene(pQuene q) { if (q->front == NULL) { return 1; } else { return 0; } }
0 0
- 03-树1. List Leaves (25)
- 03-树1. List Leaves (25)
- 03-树1. List Leaves (25)
- 03-树1. List Leaves (25)
- 03-树1. List Leaves (25)
- 03-树1. List Leaves (25)
- 03-树1. List Leaves
- 【解题报告】【浙大PAT】03-树1. List Leaves (25)
- PAT 03-树1. List Leaves (25)(C)
- 03-树1. List Leaves 经验
- 03-树2. List Leaves (25) Java
- 03-树2. List Leaves(25)
- 03-树2. List Leaves (25)
- 03-树2. List Leaves (25)
- 03-树2 List Leaves (25分)
- 03-树2 List Leaves (25分)
- 03-树2 List Leaves (25分)
- 03-树2 List Leaves (25分)
- python 模块导入问题
- Android 身份证正则表达式
- 希尔排序的C++实现
- JavaFx 简易弹出提示框
- 常用oracle命令
- 03-树1. List Leaves (25)
- 低成本高效率 百度轻应用打开自媒体商业化想象
- (x&y) + ( (x^y)>>1 )证明
- 数组的排序,加入数组中相邻元素的置换
- java中Filter的用法
- Java文件基本操作
- struts2-json-plugin-2.2.3 使用
- quartz各版本MySQL数据库存储建表SQL语句
- PX2_Orig_BootLog