
树--二叉树
文章平均质量分 65
ccDLlyy
不忘初心,方得始终
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉树的顺序实现
//完全二叉树最适合用顺序存储实现,其他二叉树也可以,但要做标记,标记某处有没有节点 #include #include #define MAXN 100 int tree[MAXN+1]; int book[MAXN+1]; int main() { memset(book,0,sizeof(book)); for(int i=1;i<=10;i++){ in原创 2016-10-24 21:28:52 · 589 阅读 · 0 评论 -
二叉树的遍历 c++标准栈实现
//前序 void PostOrderINversal(struct BinNode* Bintree) { struct BinNode* Temp; stack s=CreateStack(); Temp=Bintree; while(Temp||!IsEmpty(stack)){ while(Temp){ printf(原创 2016-10-29 11:53:53 · 867 阅读 · 1 评论 -
层序生成二叉树
//假设节点的元素值均为整数,空节点的值为0 //注意,每个 非空节点 的孩子 都要写出,否则程序无法结束 //下图的树,输入为1 2 3 0 4 5 0 0 0 0 0 ^Z(windows程序结束标志) #include #include struct BinTreeNode{ int Element; struct BinTreeNode* Left; struc原创 2016-10-29 15:11:38 · 3059 阅读 · 1 评论 -
二叉树后序遍历的非递归实现->陈越 节点二次入栈实现的变形
//陈越 二叉树后序遍历的非递归实现的节点二次入栈实现 #include #include struct BinTreeNode{ int Element; int Time;//入栈次数 struct BinTreeNode* Left; struct BinTreeNode* Right; }; //以下代码用于建树,便于测试中序遍历程序是否正确 struc原创 2016-10-29 11:26:10 · 1330 阅读 · 0 评论 -
二叉树的前/中/后序遍历原理与思路 陈越
/*摘自 陈越数据结构 1.二叉树的三种遍历,均由根节点开始,且路线是一样的,只不过节点访问的顺序不一样 2.这条路线从根节点开始,沿着左子树深入下去,当深入到最左端,无法再深入下去返回 刚才深入时遇到的节点,再逐一进入其右子树,进行如此的深入和返回,直到最后从根 的右子树的返回根节点为止 3.在这一过程中,返回节点的顺序和进入节点的顺序相反,因此即先进入后返回,这一特 性正好符合栈后原创 2016-10-29 09:48:21 · 1292 阅读 · 0 评论 -
二叉树后序遍历的迭代实现
#include #include struct BinTreeNode{ int Element; int visited;//用于标记当前节点有没有被访问过 struct BinTreeNode* Left; struct BinTreeNode* Right; }; //以下代码用于建树,便于测试中序遍历程序是否正确 struct BinTreeNode*原创 2016-10-26 15:31:45 · 2284 阅读 · 0 评论 -
把中缀表达式转换为表达式树
//简单起见,每个运算数节点存储的为小写英文字母 #include #include #include struct BinTreeNode{ char Element; struct BinTreeNode* Left; struct BinTreeNode* Right; }; struct BinTreeNode* CreateNode(char ch) {原创 2016-10-26 22:32:16 · 3975 阅读 · 1 评论 -
把后缀表达式转换为表达式树
//简单起见,每个运算数节点存储的为小写英文字母 #include #include #include struct BinTreeNode{ char Element; struct BinTreeNode* Left; struct BinTreeNode* Right; }; struct BinTreeNode* CreateNode(char ch) {原创 2016-10-26 19:20:40 · 2489 阅读 · 1 评论 -
二叉树前序遍历的迭代实现
#include #include struct BinTreeNode{ int Element; struct node* Left; struct node* Right; }; //以下代码用于建树,便于测试中序遍历程序是否正确 struct BinTreeNode* CreateNode(int data){//创造新节点 struct BinTree原创 2016-10-26 13:23:56 · 701 阅读 · 0 评论 -
二叉树中序遍历的迭代实现
#include #include struct BinTreeNode{ int Element; struct node* Left; struct node* Right; }; //以下代码用于建树,便于测试中序遍历程序是否正确 struct BinTreeNode* CreateNode(int data){//创造新节点 struct BinTree原创 2016-10-26 12:19:42 · 956 阅读 · 0 评论 -
二叉树的前/中/后/层序遍历(前/中/后序递归实现,层序队列实现)
#include struct treenode{ int element; struct treenode* left; struct treenode* right; }; void PreTraversal(struct treenode* BinTree)//前序遍历 { if(BinTree!=NULL){ printf("%d ",B原创 2016-10-24 22:51:02 · 545 阅读 · 0 评论 -
二叉树遍历的应用--求叶数,非叶数,层数,所有数的和,查找某个数,插入
#include #include struct node{ int element; struct node* Left; struct node* Right; }; struct node* CreateNode(int data){//创造新节点 struct node* temp; temp=(struct node*)malloc(sizeo原创 2016-10-25 23:17:04 · 514 阅读 · 0 评论 -
回溯
回溯是一种思想,可由递归和迭代(循环)实现 树的前/中/后遍历,深搜......均为回溯思想原创 2016-10-25 21:27:31 · 583 阅读 · 0 评论 -
二叉树的链式实现
#include #include struct treenode{ int element; struct treenode* left; struct treenode* right; };原创 2016-10-24 21:42:14 · 686 阅读 · 0 评论 -
哈夫曼树(Huffman tree)->一种二叉树
知识前提: 一棵树的路径长度为从树根到其余各节点的路径长度之和 结点的带权路径长度为从根结点到该结点之间的路径长度与该结点上所带权值的乘积 每个叶结点的带权路径长度之和就是这棵树的带权路径长度 哈夫曼树定义: 假设有n个权值,构造有n个叶子的二叉树,每个叶子的权值就是n个权值之一,这样可以构造很多个,其中一个是带权路径长度最小的,这棵二叉树就被称为哈夫曼树或最优二叉树 哈夫曼树的构造,原创 2017-01-22 17:57:41 · 1020 阅读 · 0 评论