::递归实现——创建二叉树 ----> 装入数据--->遍历---> 显示 --->销毁
2005-04-16 17:40
495 查看
/* twoTree.cpp在 c++环境编译 ! 创建二叉树 ----> 装入数据,---->遍历---> 显示 --->销毁*都换用递归实现了 非递归实现还不怎么熟悉所以就*/#include <iostream.h>#ifndef DEBUG#define DEBUGtypedef int DataType;typedef struct Node{ DataType data; struct Node *LChild; struct Node *RChild;}Node;/*树的数据结构*//////////////////////////////////////////////////////////////Node * Initiate()/*初始化为空树*/{ Node *root = 0; return root ;}////////////////////////////////////////////////////////////////Node * Creat( DataType data ) /*建节点*/{ Node * Temp = new Node ; Temp -> data = data ; Temp -> LChild = 0 ; Temp -> RChild = 0; return Temp ;} /************************************************/void Insert( Node *&root , DataType data )//在c下不能这样 Node *&root/* 降顺序二叉数装入数据,左子树<右子树*/{ Node *p = Creat( data ); if( !root ) { root = p; } else if( p->data < root->data ) { Insert ( root->LChild , p->data ); } else { Insert ( root->RChild , p->data ); } /*相等的 将装数据到右孩子 */ }/****************************************************/ void PrintTree(Node * root) /*递归中序遍历 ---> 显示从小到大*/ { if( !root ) return ; PrintTree(root->LChild); cout<< root->data <<" :"; PrintTree( root->RChild ); return ;}/*********************************************************/void FreeTree(Node * root){ if( !root ) return; FreeTree(root -> LChild); FreeTree(root -> RChild); delete root;//跟节点要最后删!} #endif DEBUG///测试代码////////////void main(){ int a; Node *Root = Initiate() ; cout<<" -1 to exit: "<<endl; cin>>a; while( (a != -1)&&cin.good() ) //遇到非法输入同样退出循环 { Insert( Root , a ); cin>>a ; } if(!cin.good()) //输出错误信息 { cout<<" the type is error ! "<<endl; } PrintTree(Root); cout<<" ok ? "<<endl; FreeTree(Root);//销毁树 防止内存泄漏 return;}
相关文章推荐
- /* 创建二叉树 ----> 装入数据,---->遍历---> 显示 --->销毁*/
- 用c语言创建一颗二叉树,用递归方法实现对其进行先序、中序和后序遍历的操作。
- Java创建二叉树及其遍历的递归和非递归实现
- 数据结构 — 实现二叉树的前序,中序,后序遍历(非递归)
- 不疯魔,不成活!——二叉树的创建、遍历(递归实现)等操作。
- 数据结构——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 数据结构 利用循环队列层次遍历一棵二叉树 递归实现
- 二叉树 前序遍历的非递归实现 中序遍历的非递归实现 后序遍历的非递归实现 创建二叉树
- iOS:二叉树多级表格的使用,使用三方库TreeTableView-master实现对json解析数据的递归遍历整理成树状结构
- 数据结构与算法分析学习笔记--第四章(二叉树:创建、递归遍历、非递归遍历、根据数据删除结点等)
- 递归方法实现二叉树的创建,遍历
- 二叉树的创建与先、中、后序遍历递归实现
- 二叉树创建、遍历的递归和非递归实现
- 数据结构 分别用递归和非递归方法实现二叉树先序,中序,后序遍历
- 数据结构——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 采用二叉链表结构实现二叉树,并以递归遍历思想实现二叉树的创建、二叉树的遍历(先序、中序、后序和层次遍历)
- <二叉树 前中后 层序 非递归遍历 c语言实现>
- 数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 二叉树的简单递归实现(创建,遍历,高度,大小)