
数据结构
数据结构
feel_myself_is_lowB
日复一日,年复一年,总能进步一丢丢。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉查找树(二叉排序树、二叉搜索树)的查找 C/C++
既然名字都叫二叉查找树,是不是肯定得用来查找嘛。 递归和非递归的 //递归查找 BSTNode* RecursionBSTSearch(BSTNode *root, int ele) { if (root == NULL) { return NULL; } if (ele == root->data) { return root; } if (ele < root->data) { RecursionBSTSearch(root->lChil原创 2020-09-04 17:26:25 · 886 阅读 · 0 评论 -
二叉查找树(二叉排序树、二叉搜索树)的判断 C/C++
二叉排序树的定义: 一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树; (4)没有键值相等的结点。 说白了就是无论是对整棵树还是其某棵子树,左子树的节点都比根节点小,右子树的节点都比根节点大 思路: https://blog.youkuaiyun.com/feel_myself_is_lowB/article/details/108347389这里原创 2020-09-03 11:35:42 · 667 阅读 · 0 评论 -
二叉查找树(二叉排序树)创建 C/C++
一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树; (4)没有键值相等的结点。 说白了就是无论是对整棵树还是其某棵子树,左子树的节点都比根节点小,右子树的节点都比根节点大 #include<stdio.h> #include<stdlib.h> typedef struct BinarySortTreeNode原创 2020-09-01 17:52:05 · 471 阅读 · 0 评论 -
哈夫曼编码 C/C++
哈弗曼编码需要用到哈弗曼树。如果不知道可以随便看看这里------------>构建哈弗曼树 什么是哈夫曼编码? 哈夫曼编码是一种可变字长编码。根据给定信息中字符出现的频次动态生成最优编码。常用于数据压缩。 哈夫曼编码实现: 哈夫曼编码要用到哈弗曼树,在一棵哈弗曼树的基础上,将哈弗曼树每个节点的左分支当做0,右分支当做1。与二进制编码01相对应。 哈弗曼树中,节点对应哈夫曼编码应该为: A :1100 B:1101 C:111 D:10 E:0 实现哈弗曼编码主要..原创 2020-07-08 11:12:28 · 445 阅读 · 0 评论 -
构建哈弗曼树 C/C++
什么是哈弗曼树? 给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 权值:树的每个节点数据域data可以放一个特定的zhi数来代表它的值,可以叫做权值。 路径:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。也就是经过的节点。 路径长度:路径通路中分支的数目称为路径长度。也就是边的条数。 带权路径长度:从根结点到该结点之间的路径长度与该结点的权的乘原创 2020-07-06 14:50:42 · 483 阅读 · 0 评论 -
拷贝二叉树 C/C++
看看这棵二叉树: 给定根节点,怎样将这棵二叉树拷贝出一棵新的二叉树? 不多逼逼,看代码: //拷贝二叉树 Node * copyBinaryTree(Node *root) { if (NULL == root) { return NULL; } Node *leftNode = copyBinaryTree(root->left); Node *rlghtNode = copyBinaryTree(root->right); Node *newTree = (No原创 2020-07-03 13:48:27 · 2103 阅读 · 0 评论 -
计算二叉树叶子结点个数 C/C++
叶子结点:没有左孩子和右孩子的节点。 如下: 这棵二叉树中叶子结点为红色圈圈中的节点,共有 5 个。 看代码: #include<iostream> using namespace std; typedef struct BinaryTreeNode { char data; //数据 struct BinaryTreeNode *left; //左孩子 struct BinaryTreeNode *right; //右孩子 }Node; int getLeafNu原创 2020-07-03 11:03:37 · 4556 阅读 · 2 评论 -
计算二叉树的高度(深度) C/C++
二叉树递归特性可以计算出二叉树高度: 不多逼逼,code: #include<iostream> using namespace std; typedef struct BinaryTreeNode { char data; //数据 struct BinaryTreeNode *left; //左孩子 struct BinaryTreeNode *right; //右孩子 }Node; int getDepth(Node *root) { if (NULL == roo原创 2020-07-02 17:39:40 · 3304 阅读 · 0 评论 -
二叉树的非递归遍历 C/C++
前面用递归的方式实现了二叉树的遍历:https://blog.youkuaiyun.com/feel_myself_is_lowB/article/details/106897311 下面用非递归方式实现二叉树遍历:原创 2020-06-28 17:34:29 · 369 阅读 · 0 评论 -
二叉树遍历(前序遍历、中序遍历、后序遍历、层次遍历)C/C++
二叉树的遍历方式有四种:遍历的时候记住,左子树一定是先于右子树遍历的,根最先遍历就是先序遍历,根在中间就是 中序遍历,根在最后遍历就是后序遍历。并且,遍历左子树和右子树的时候,遍历的方式也是 遵循大的遍历规则,比如二叉树遍历方式为先序遍历,那么左子树和右子树遍历的时候,也是 ...原创 2020-06-22 13:43:27 · 400 阅读 · 0 评论