已知前序、中序,递归建立二叉树(C语言)
2017-05-27 17:21
267 查看
#include <stdio.h> #include <malloc.h> int pre[]={1,2,4,5,3,6,7};//前序序列 int ino[]={4,2,5,1,6,3,7};//中序序列 struct BTree { struct BTree *left,*right; int data; };//树节点定义 void BuildBTree(struct BTree **T,int preL,int preR,int inoL,int inoR)//递归建树 { if(preL>preR) return; int e=pre[preL]; int root=inoL; while(ino[root]!=e&&root<=inoR) ++root; (*T)=(struct BTree *)malloc(sizeof(struct BTree)); (*T)->left=NULL; (*T)->right=NULL; (*T)->data=e; BuildBTree(&(*T)->left,preL+1,preL+root-inoL,inoL,root-1); BuildBTree(&(*T)->right,preL+root-inoL+1,preR,root+1,inoR); } void Treverse(struct BTree *T)//中序遍历 { if(T) { Treverse(T->left); printf("%d ",T->data); Treverse(T->right); } } int main() { struct BTree *T=NULL; BuildBTree(&T,0,6,0,6); Treverse(T); return 0; }
相关文章推荐
- 数据结构_二叉树的先序建立与先序,中序,后序(递归)遍历方式_C语言源代码
- 已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法
- (1)建立二叉树的二叉链表。 (2)写出对用二叉链表存储的二叉树进行先序、中序和后序遍历的递归和非递归算法。 (3)写出对用二叉链表存储的二叉树进行层次遍历算法。 (4)求二叉树的所有叶子及结点总数。
- 已知树的中序+后序/先序遍历,建立二叉树
- 用c语言创建一颗二叉树,用递归方法实现对其进行先序、中序和后序遍历的操作。
- UVA548递归二叉树求路径和和根据中序和后序建立二叉树
- 二叉树基本操作的递归实现(二叉树建立,先序,中序,后序,深度的递归遍历。广度优先,高度优先的非递归遍历)
- (C语言)二叉树非递归遍历前序和中序(数据结构十四)
- (C语言)二叉树非递归遍历前序和中序(数据结构十四)
- 已知前序和中序、后序和中序建立二叉树
- 二叉树前序、中序、后序非递归遍历实现(C语言)
- 二叉树建立,递归,非递归,前序,中序,后序遍历
- C语言二叉树常见操作详解【前序,中序,后序,层次遍历及非递归查找,统计个数,比较,求深度】
- 数据结构二叉树——建立二叉树、中序递归遍历、非递归遍历、层次遍历
- 二叉树前序、中序、后序递归遍历实现(C语言)
- 已知先序+中序构造二叉树,已知后序+中序构造二叉树(C语言)
- c语言实现二叉树的建立与前序、中序、后序、层序遍历
- 二叉树的建立,非递归前序、中序、后续遍历
- 数据结构二叉树——建立二叉树、中序递归遍历、非递归遍历、层次遍历
- C语言非递归实现二叉树的先序、中序、后序、层序遍历