二叉树的深度优先遍历、广度优先遍历和非递归遍历 二叉树的遍历: D:访问根结点,L:遍历根结点的左子树,R:遍历根结点的右子树。 给定一棵二叉树的前序遍历序列和中序遍历序列可以惟一确定一棵二叉树。 二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。 深度优先遍历二叉树。 1. 中序遍历(LDR)的递归算法: 若二叉树为空,则算法结束;否则:     中序遍历根结点的左子树;     访问根结点;  &nbs…

2021年11月19日 0条评论 38点热度 阅读全文

图的广度优先遍历 一、基本思想 二、图的广度优先遍历举例 三、伪代码实现 邻接点的访问的实现需要根据图的存储方式来进行实现

2021年11月4日 0条评论 29点热度 阅读全文

1. 起泡排序算法的原理        起泡排序是交换排序的一种,其基本方法是:设待排序元素列中元素的个数为n,首先比较下标为n-2和n-1个元素,如果发生逆序(及前一个大于后一个),则将这两个元素交换;然后对下标为n-3和n-2的元素做同样的处理;重复此过程直到处理完下标为0和1的元素。这称之为一趟起泡,结果将最小的元素交换到待排序元素序列的第一个位置,其他元素也都向最终排序的方向移动。当然在个别情形下,元素有可能在排序中途向相反的方向移动(两元素相等时,不稳定排序,如图一…

2021年10月26日 0条评论 26点热度 阅读全文

Problem Description 给出图的顶点数和顶点与顶点之间的连接关系,请输出用邻接矩阵存储的图的广度优先搜索顶点序列。 Input 输入的第一行是一个整数T表示测试示例的数目,每组示例的第一行有两个数m(2<=m<=10)和n(1<=n<=m*(m-1)/2),m表示顶点的个数(顶点的标号从1-m),n表示边的个数。下面n行的每行有两个顶点号表示一条边。后面一行是一个数k,k表示需要搜索的顶点数量。后面k行每行有一个数表示从该顶点开始搜索。在搜索过程中与同一个顶点相邻的顶点按顶点…

2021年10月24日 0条评论 30点热度 阅读全文

一,已知先序和中序 求后序 char s1[10],s2[10]; void tree(int n , char * s1 , char * s2 ) {     if(n <= 0) return ;     int p = strchr(s2,s1[0])-s2;     //找到根结点在中序遍历中的位置     tree(p,s1+1,s2);  &nbs…

2021年10月18日 0条评论 33点热度 阅读全文

我们拿线性表的顺序存储结构-顺序表来讲解 线性表元素的逻辑序号是从1开始的,而对应顺序表的data[]数组下标是从0开始的(这种下标成为物理序号),要注意他们之间的转化 通俗易懂,如下图所示:(图来自网络) 表中的a对应的物理序号是0,逻辑序号是1

2021年10月15日 0条评论 27点热度 阅读全文

问题描述: 本题要求实现一个函数,要求从顺序表中查找指定元素,并返回第一个查找成功的元素在表中的位置序号,若查找失败,则返回0;函数接口定义:int LocateElem(SqList L,ElemType e); 其中SqList结构定义如下:typedef struct{ ElemType *elem; int length; }SqList; 裁判测试程序样例:#include <stdio.h> #include <stdlib.h> #define MAXSIZE 5 typede…

2021年10月12日 0条评论 39点热度 阅读全文

该程序实现了一个顺序表的基本操作: int InitList_Sq(); //初始化线性表 void CreateSqList(); //创建线性表 void ListInsert(); //向线性表中插入值 void ListDelete(); //删除顺序表中的数据元素 void PrintList(); //打印顺序表 int Locate(); //定位数据元素 int ListLength(); //返回线性表L的长度 源代码为:  #include<stdio.h>//标准头文件 …

2021年10月9日 0条评论 30点热度 阅读全文

队列和栈相互模拟是面试题中的经典题目,这里小编提供两种方法:一种是引用C++的STL静态库提供的#include <stack>和#include <queue>,另一种是自己动手写栈结构和队列结构 1.引用STL栈和队列 //队列模拟栈 //思路:两个队列相互转换,进栈以空队列为目标,出栈以非空队列为目标(//队列:先进先出 //栈:后进先出 ) //进栈:以空队列为目标,设A为空队列,先将待进栈数据data插入A中,再将B队列数据压入A中,同时删除B中压入数据 void SPush(qu…

2021年10月7日 0条评论 29点热度 阅读全文

二叉树的查找: #include<iostream> #include"DoubleNode.h" //双链表结点类 #include"SeqStack.h" //顺序栈 #include"LinkedStack.h" //链式栈 #include"SeqQueue.h" //顺序循环队列 using namespace std; template <class T> class BinaryTree // 二叉树类 { public: DoubleNode<T> *root; …

2021年10月7日 0条评论 32点热度 阅读全文