1、/构造函数,根据输入前序序列由键盘输入 C_LJH_BinTree();/析构函数 void PreOrder();/前序遍历 void InOrder();/中序遍历 void PostOrder();/后序遍历 private: T data; C_LJH_BinTree *lchild,*rchild; bool NO_Die; template C_LJH_BinTreech; if (ch = #) NO_Die = true;/若为#,代表空节点 else this-data = ch;/保存输入的节点 /左子树 C_LJH_BinTree *newChild0 = new C_L
2、JH_BinTreeNO_Die) delete newChild0; elselchild= newChild0; /右子树 C_LJH_BinTree *newChild1 = new C_LJH_BinTree delete newChild1;rchild= newChild1; /析构函数C_LJH_BinTree() if (lchild) delete lchild; /删除父节点之前,先删除子节点 if (rchild) delete rchild; /前序遍历 void C_LJH_BinTreePreOrder() coutdatalchild-PreOrder(); if
3、 (rchild!rchild- /中序遍历InOrder() if (lchild) lchild-InOrder(); if (rchild) rchild- /后序遍历PostOrder()PostOrder(); int main()请输入二叉树的前序遍历:endl;(以#作为分支结尾,例如:A B # # C # #) C_LJH_BinTree m_tree;前序遍历为: m_tree.PreOrder(); cout=0&i=numVertices ? VerticesListi : NULL; int getWeight(int v1,int v2)/取边(v1,v2)上的权值
4、 return v1!=-1&v2!=-1 ? Edgev1v2 : 0; int getFirstNeighbor(int v);/取顶点v的第一个邻接顶点 int getNextNeighbor(int v,int w);/取v的邻接顶点w的下一邻接顶点 bool insertVertex(char vertex);/插入顶点vertex bool insertEdge(int v1,int v2,int weight);/插入边(v1,v2),权为weight bool removeVertex(int v);/删去顶点v和所有与它相关联的边 bool removeEdge(int v1
5、,int v2);/在图中删去边(v1,v2) int getVertexPos(char vertex)/给出顶点vertex的位置,如果该顶点不在图内则返回-1 for(int i=0;numVertices;i+) if(VerticesListi=vertex) return i; return -1; int mini();/求图中所有边的最小权值 bool input();/输入函数 bool output();/输出函数 void kruskal();/kruskal算法 void prim();/prim算法protected: int maxVertices;/图中最大顶点数
6、 int numEdges;/图中当前边数 int numVertices;/图中当前顶点数 private: char *VerticesList;/顶点表 int * *Edge;/邻接矩阵 int visit50;/便利时的辅助工具 primnode closeedge50;/为实现prim 函数的辅助结点;LJH_Graphmtx:LJH_Graphmtx(int sz)/构造函数 maxVertices=sz; numVertices=0; numEdges=0; int i,j; VerticesList=new charmaxVertices;/创建顶点表数组 Edge=(int
7、 * *)new int *maxVertices;/创建邻接矩阵数组 for(i=0;maxVertices; Edgei=new intmaxVertices;for(i=0;i+)/邻接矩阵初始化 for(j=0;j0&EdgevimaxWeight)return i; return -1;getNextNeighbor(int v,int w)/给出顶点v的某邻接顶点w的下一个邻接顶点的位置,如果找不到,则函数返回-1 if(v!w! for(int i=w+1;maxWeight) return i;bool LJH_Graphmtx:insertVertex(char vertex)/插入顶点vertex if(numVertices=maxVertices) return false;/顶点表满,不插入 VerticesListnumVertices+=vertex; return true;insertEdge(int v1,int v2,int weight)/插入边(v1,v2),权为weig
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1