二叉树的非递归按层遍历
来源:互联网 发布:ubuntu软件中心打不开 编辑:程序博客网 时间:2024/06/06 01:38
#include<stdio.h>#include<stdlib.h>typedef struct Node {int data;struct Node * left;struct Node * right;}BTNode;BTNode * CreatBTree(int a[],int n) {int i;BTNode *root = NULL, *p = NULL, *c = NULL, *pa = NULL;//创建二叉树的根节点root = (BTNode *)malloc(sizeof(BTNode));root->data = a[0];root->left = root->right = NULL;//创建其他结点for (i = 1; i < n; i++) {p = (BTNode *)malloc(sizeof(BTNode));p->data = a[i];p->left = p->right = NULL;c = root;while (c) {pa = c;if (c->data > p->data) {c = c->left;}else {c = c->right;}}if (pa->data > p->data) {pa->left = p;}else {pa->right = p;}}return root;}//非递归按层遍历输出二叉树void PrintBTree(BTNode *root, int n) {//创建存放二叉树节点地址的动态数组BTNode **s = (BTNode**)malloc(sizeof(BTNode*)*(n + 1));BTNode *p = NULL;int top = -1;s[++top] = root;while (top + 1) {p = s[top--];//出栈,并输出出栈元素的数据域printf("%d,", p->data);if (p->right) {//判断该结点是否有右子女,有的话入栈s[++top] = p->right;}if (p->left) {//判断该节点是否有左子女,有的话入栈s[++top] = p->left;}}}int main(void) {int a[8] = { 3,2,5,8,4,7,6,9 };BTNode * root;root = CreatBTree(a, 8);PrintBTree(root, 8);return 0;}
阅读全文
0 0
- 二叉树的非递归按层遍历
- 【数据结构与算法】二叉树的遍历(递归遍历、非递归遍历、层序遍历)
- 二叉树的层序遍历(非递归)
- 数据结构笔记--二叉树的非递归遍历与按层遍历分析
- 二叉树遍历:递归+非递归+逐层遍历
- 二叉树的前序,中序,后序的递归与非递归遍历以及按层遍历
- 二叉树的建立,前中后序遍历的递归版本和非递归版本,层序遍历
- 二叉树的常用操作(创建、先中后序递归与非递归遍历、层序遍历)
- C++ 完全二叉树的建立、先序递归非递归遍历、层序遍历
- 二叉树----节点个数、高度、递归和非递归遍历、按层遍历
- 二叉树----节点个数、高度、递归和非递归遍历、按层遍历
- 二叉树遍历(递归,非递归,层序)
- 二叉树的递归,非递归遍历
- 二叉树的递归+非递归遍历
- 二叉树的递归非递归遍历
- 二叉树的遍历--递归+非递归
- 二叉树的递归、非递归遍历
- 二叉树的递归非递归遍历
- oracle 配置st_geometry
- <C++ Primer_5th>习题_3.4
- RPC作品开发记录
- gRPC学习笔记
- cache、内存、虚拟内存
- 二叉树的非递归按层遍历
- GET方式缓存清除
- HDU 6026 Apple【高精度问题】
- github+hexo+阿里云搭建个人博客
- 《简爱》:爱与自由
- <C++ Primer_5th>习题_3.5
- 多线程编程之线程间的通信——wait and notify
- 网页上搞出个"HelloWorld".........................
- CSS3背景属性