C++先序遍历与中序遍历生成二叉树 后序遍历与中序遍历生成二叉树
来源:互联网 发布:网页图片批量下载软件 编辑:程序博客网 时间:2024/05/18 23:12
#include<iostream>#include<queue>#include<stack>using namespace std;template <class Type>class BinTreeNode;template <class Type>class BinTree;template <class Type>class BinTreeNode{ friend class BinTree<Type>;public: BinTreeNode(Type d=Type(),BinTreeNode<Type> *left=0,BinTreeNode<Type> *right=0) :data(d),leftChild(left),rightChild(right) {} ~BinTreeNode(){}private: Type data; BinTreeNode<Type> *leftChild; BinTreeNode<Type> *rightChild;};template<class Type>class BinTree{public: BinTree(Type ref,BinTreeNode<Type> *t=0) :root(t),refvalue(ref) {} ~BinTree(){}public: void CreateBinTree_Pre(char *VLR, char * LVR) { int n = strlen(VLR); CreateBinTree_Pre(root,VLR,LVR,n); } void CreateBinTree_Post(char *LRV, char *LVR) { int n = strlen(LRV); CreateBinTree_Post(root,LRV,LVR,n); }protected: void CreateBinTree_Post(BinTreeNode<Type> *& t, //后序遍历 char *LRV, char *LVR, int n) { if(n==0) return; else { int k = 0; while(LRV[n-1] != LVR[k]) k++; t = new BinTreeNode<Type>(LVR[k]); CreateBinTree_Post(t->leftChild,LRV,LVR,k); CreateBinTree_Post(t->rightChild,LRV+k,LVR+k+1,n-k-1); } } void CreateBinTree_Pre(BinTreeNode<Type> *& t, //先序遍历 char *VLR, char *LVR, int n) { if(n==0) return; else { int k = 0; while(VLR[0] != LVR[k]) {k++;} t = new BinTreeNode<Type>(LVR[k]); CreateBinTree_Pre(t->leftChild,VLR+1,LVR,k); CreateBinTree_Pre(t->rightChild,VLR+k+1,LVR+k+1,n-k-1); } }private: BinTreeNode<Type> *root;};
0 0
- C++先序遍历与中序遍历生成二叉树 后序遍历与中序遍历生成二叉树
- 由二叉树先序遍历/后序遍历和中序遍历生成二叉树
- C实现二叉树的先序遍历,中序遍历,后序遍历
- c语言实现二叉树的先序遍历,中序遍历,后序遍历
- 二叉树的先序遍历,后序遍历,中序遍历,层次遍历
- 二叉树的遍历(1)--先序遍历,中序遍历,后序遍历
- 二叉树 非递归 先序遍历 中序遍历 后序遍历 层次遍历
- 递归法遍历二叉树 (先序遍历 中序遍历 后序遍历)
- 二叉树的遍历代码(先序遍历,中序遍历,后序遍历)
- 二叉树-建树,层次遍历,先序遍历,中序遍历,后序遍历
- 二叉树3(构造二叉树、先序遍历、中序遍历、后序遍历)
- c语言实现二叉树(BiNodeTree)的建立与先序遍历,中序遍历
- 线索二叉树生成与中序遍历操作
- 前序遍历+中序遍历生成二叉树
- 根据先序遍历和中序遍历生成二叉树
- 二叉树(一) 先序遍历、中序遍历、后续遍历、层次遍历的递归与非递归实现
- 二叉树树的先序遍历,中序遍历和后序遍历
- 二叉树创建、先序遍历、中序遍历、后序遍历、树深度
- Android Dev Intro - Android Thread Intro
- Maven 那点事儿
- iOS获取手机内部音乐列表
- android的进程/线程的管理
- DevSecOps简介(二)
- C++先序遍历与中序遍历生成二叉树 后序遍历与中序遍历生成二叉树
- 使用visual studio code开发Go程序
- 第十七课预期策略选择——C#计算器编程教学
- POJ 1651 Multiplication Puzzle
- 将dba转换成file号block号
- javaweb学习总结(四十七)——监听器(Listener)在开发中的应用
- jmeter语言设置
- 从源码理解ArrayList.java
- 欢迎使用CSDN-markdown编辑器