数据结构中二叉树的c++实现
2017-01-16 11:27
381 查看
笔者最近在编写PEG算法(progressive edge-growth algorithm)时,用到了二叉树的层遍历算法,所以顺便总结了一下
二叉树的算法;这里规定当输入数据是零时,表示该节点为空,采用先序递归算法输入数据,同时采用递归算法输出数据,具
体实现方法如下示:
/*********************************************************************
function:实现二叉树
author: perfects110 version:1.0
**********************************************************************/
二叉树的算法;这里规定当输入数据是零时,表示该节点为空,采用先序递归算法输入数据,同时采用递归算法输出数据,具
体实现方法如下示:
/*********************************************************************
function:实现二叉树
author: perfects110 version:1.0
**********************************************************************/
#include<iostream> using namespace std; typedef int type; typedef struct biTree{ type data; biTree *lchild,*rchild; }; ////////////////////////初始化树//////////////////////// void initialTree(biTree* &p){ p=(biTree*)malloc(sizeof(biTree)); p->lchild=NULL; p->rchild=NULL; }; //////////////////////创建二叉树////////////////////// void createTree(biTree* &p){ type data; scanf("%d",&data); if(data==0) p=NULL; else{ p=(biTree*)malloc(sizeof(biTree)); p->data=data; createTree(p->lchild); createTree(p->rchild); } }; ////////////////////先序遍历/////////////////////// void lfPrint(biTree* &p){ if(p!=NULL){ cout<<p->data<<" "; lfPrint(p->lchild); lfPrint(p->rchild); } }; ////////////////////中序遍历/////////////////////// void cnPrint(biTree* &p){ if(p!=NULL){ cnPrint(p->lchild); cout<<p->data<<" "; cnPrint(p->rchild); } }; ////////////////////后序遍历/////////////////////// void ltPrint(biTree* &p){ if(p!=NULL){ ltPrint(p->lchild); ltPrint(p->rchild); cout<<p->data<<" "; } }; ////////////////////释放内存/////////////////////// void freeTree(biTree* &p){ if(p!=NULL){ freeTree(p->lchild); freeTree(p->rchild); free(p); } };
/////////////////查找树的深度////////////////////// int returnDepth(biTree* &p){ if(p==NULL){ return -1; }else{ int lf=returnDepth(p->lchild); int rt=returnDepth(p->rchild); return (lf>rt?lf:rt)+1; } }; int main() { biTree* tree; createTree(tree); cnPrint(tree); cout<<endl; lfPrint(tree); cout<<endl; ltPrint(tree); cout<<"depth:"<<returnDepth(tree)<<endl; freeTree(tree); return 0; }它的运行结果如下示:
相关文章推荐
- c++实现数据结构的二叉树及其遍历二叉树
- 【算法和数据结构】二叉树的定义和封装(C++实现)
- C/C++基本数据结构:有序二叉树的基本概念和实现
- 数据结构C++实现——二叉树
- 用c++实现二叉树及堆的数据结构
- 数据结构_树_二叉树的线索化_C++实现
- C++ 数据结构-------二叉树实现
- 【数据结构】二叉树的构建及其遍历(C++实现)
- 数据结构-二叉树(应用篇)-之二叉搜索树 C和C++的实现
- (二叉树)谈一谈各类算法和数据结构的c++实现以及相关操作的复杂度(二)
- 数据结构-二叉树:C++模板类递归实现与非递归实现
- 简单数据结构之二叉树(C++实现)
- 数据结构复习:几种排序算法的C++实现和二叉树的相关算法实现
- 数据结构_树_二叉树的建立、遍历、复制与移除_二叉链表存储_C++实现
- 二叉树的链式存储结构 C++代码实现
- C++实现的二叉树---家谱图
- 二叉树用顺序表实现 C++代码实现
- C++ 实现求二叉树的深度及便利(递归与非递归算法)
- C++ 二叉树的实现以及指针使用注意事项
- 《数据结构与算法分析C++描述》 搜索二叉树的C++实现