数据结构总结
tanhaiyuan
这个作者很懒,什么都没留下…
展开
-
表达式求值
今天写了三个多小时才搞定了, 虽然想着很简单, 但是实现以后却发现有好多错误, 调试,测试……思路:最关键在于中序表达式转化为后序表达式算法描述:将中缀表达式转换为等价的后缀表达式的过程要使用一个栈放“(”,具体可以按照下面的方式进行。(1)从左到原创 2011-09-10 00:27:05 · 828 阅读 · 0 评论 -
二叉树的总结
一:构造链式二叉树1:由二叉树的括号表示法构造链式二叉树2:由二叉树顺序存储构造链式二叉树3:知道二叉树的中序序列和前序序列, 或中序序列和后序序列,构造链式二叉树4:将孩子链存储的多叉树转化为二叉树二:查找二叉树中某节点三:求深度(高度, 层数)1:求整棵树的深度2:求某个值为x的节点的层数四:遍历1:前序,中序, 后序遍历(递归,原创 2011-10-23 20:34:03 · 1213 阅读 · 0 评论 -
二叉树的创建
最近在学树,总结一下……一:由二叉树的括号表示来构建二叉树1:非递归形式:#includeusing namespace std;typedef struct Node{ char data; Node *left; Node *right;}BTNode;Node *stack[100];//由二叉树的括号表示, 创建二叉树,并返回根节点的指针 void Cre原创 2011-10-18 21:19:09 · 727 阅读 · 0 评论 -
五:二叉树输出
1:以括号表示法输出输出://输出括号表示 void DispBTNode( BTNode *p){ if( p!=NULL ) { coutdata; if( p->left!=NULL || p->right!=NULL)//至少存在一个儿子时,输出 { cout<<"("; DispBTNode( p->left ); //当有这原创 2011-10-26 00:33:09 · 999 阅读 · 0 评论 -
四:二叉树遍历
1:递归://先序 void PreOrder(BTNode *p){ if( p != NULL)//注意不要忽略掉 { coutdata; PreOrder(p->left); PreOrder(p->right); }}//中序 void InOrder(BTNode *p){ if( p!=NULL )//注意不要忽略掉 { InOrder(p-原创 2011-10-25 23:46:25 · 848 阅读 · 0 评论 -
一:构造链式二叉树(二)
一:由序列构造首先要知道:(1):任何n个不同节点的二叉树, 都可由它的中序序列和先序序列 或 中序序列和后序序列唯一的确定(2):在由两种序列确定定一个二叉树时,先序和后序序列的作用是确定一颗二叉树的根节点, 而中序序列的作用是确定左右子树的中序序列(1) 的证明用数学归纳法即可 而( 2 )的结论是显而易见的实现:1:由中序和先序序列构造BTNode原创 2011-10-23 23:06:13 · 754 阅读 · 0 评论 -
三:求深度(高度, 层数)
1:求二叉树的深度思路:递归分别求出左右子树的深度, 取其中的最大值//从0开始,得到树的深度 int BTreeHeight( BTNode *p){ if( p==NULL ) return 0; //获得p的左子树,右子树的深度(都不含p),然后分别加1,表示从p开始,到左子树末端的深度,和到右子树末端的深度;二者取最大值 return MAX(BTreeHeight(p原创 2011-10-23 23:13:28 · 1418 阅读 · 1 评论 -
一:构造链式二叉树(—)
1:由二叉树的括号表示法构造链式二叉树//由二叉树的括号表示, 创建二叉树,并返回根节点的指针 void CreateBTree( BTNode *&root, char str[])//参数:传入根节点的指针,二叉树的括号表示 { //flag标记其后处理的节点; 若是父节点(此刻为栈顶元素)的左儿子(flag=1), 若是是右儿子(flag=2) int j=0, flag=0,原创 2011-10-23 21:12:13 · 1150 阅读 · 0 评论 -
二叉树的基本操作
其实二叉树的基本操作很多, 但基本上都是基于二叉树的遍历的, 大同小异, 因此我我在这选几种写一下, 至于二叉树的遍历, 我在下一篇专门写;而且在树这一章节对递归要求较高,要对2,3,4多思考一下……1:创建二叉树 2:查找节点 3:求树的深度 4;用括号表示法输出二叉树 #includeusing namespace std;#define MAX(a,原创 2011-10-18 23:33:24 · 1342 阅读 · 1 评论 -
树状数组
原创 2011-10-06 18:31:09 · 466 阅读 · 0 评论 -
二叉树判断(满二叉树, 完全二叉树, 相似, 对称同构)
二:判断二叉树是否为完全二叉树判断方法:1:以层次遍历的方法, 找到第一个两个儿子不都存在的节点 2:(1)若此节若左儿子不存在,右儿子存在,则此二叉树不是完全二叉树 (2 ) 若此节点有左儿子,无右儿子,或则两个儿子都不存在,则只需判断此节点后面的节点是否原创 2011-11-01 23:56:24 · 8545 阅读 · 2 评论