数据结构与算法
iot_yet
这个作者很懒,什么都没留下…
展开
-
中缀表达式转化后缀表达式
数据结构与算法分析-C语言描述 -p54 页,讲述了中缀表达式使用堆栈方式转化成后缀表达式. 后缀表达式用来实现计算四则运算. 具体思路是: 1.遇到运算符, 2.跟栈顶元素比较, 3.优先级比栈顶的高 转5. 4.小于或者相等则栈顶弹出,转2. 5.当前运算符进栈. 对’(’ ')'这里的处理取巧使用了递归方式,不用考虑跟上一级的复杂的关系 下面是源码: (方式有点蠢,谁叫我着急呢,后面再改进...原创 2019-09-05 23:28:32 · 149 阅读 · 0 评论 -
二叉树的遍历打印
二叉树的遍历打印, 前序, 中序, 后序, 层级. (图形化打印见<二叉树的增加,删除>) #include "stdlib.h" #include "stdio.h" #include "string.h" typedef char element_type; typedef struct tree_node { element_type element; str...原创 2019-09-05 23:29:29 · 782 阅读 · 0 评论 -
二叉树的增加,删除
二叉树的增加: 插入数据x,从根节点开始,不断比较节点与x的大小; 若x小于节点,下一次比较x与节点的左子树,反之,比较x与节点的右子树; 直到遇到一个空的节点,插入数据. 二叉树的删除分三种情况: 删除的节点为叶子节点: 直接删除; 删除节点为单子节点: 则子节点继承(替代)位置; 删除节点为双子节点: 找左右节点树中最接近节点值的节点(删除节点的左子树找最右值 or 右子树找最左值); 清...原创 2019-09-05 23:29:58 · 854 阅读 · 0 评论 -
后缀表达式转表达式树
思路: 遇到普通字符,创建叶节点, 压栈; 遇到运算符, 创建运算符节点, 弹出栈顶两个节点作为,运算符节点的左右子节点, 压栈; 后缀表达式完整的话, 最后栈中留一元素,指向的表达式树的根节点. #include "stdlib.h" #include "stdio.h" #include "string.h" typedef char bool; #ifndef true #defin...原创 2019-09-05 23:30:31 · 981 阅读 · 0 评论 -
平衡树AVL的插入
思路: 分析总结插入后引起不平衡状况的几个例子 1: 插入到树的外围, 左子点的左子点, 右子点的右子点, 使用单旋转; 2: 插入到树的内围, 左子点的右子点, 右子点的左子点, 使用双旋转; 3: 使用递归调用,更新沿路的height(用于平衡,左右子树不超过2); 具体情况见 <数据结构与算法分析>P82 #include "string.h" #include "stdlib....原创 2019-09-05 23:31:03 · 200 阅读 · 0 评论