数据结构
数据结构
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 · 830 阅读 · 0 评论 -
二叉查找树(二叉排序树、二叉搜索树)的判断 C/C++
二叉排序树的定义:一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;(4)没有键值相等的结点。说白了就是无论是对整棵树还是其某棵子树,左子树的节点都比根节点小,右子树的节点都比根节点大思路:https://blog.csdn.net/feel_myself_is_lowB/article/details/108347389这里原创 2020-09-03 11:35:42 · 465 阅读 · 0 评论 -
二叉查找树(二叉排序树)创建 C/C++
一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;(4)没有键值相等的结点。说白了就是无论是对整棵树还是其某棵子树,左子树的节点都比根节点小,右子树的节点都比根节点大#include<stdio.h>#include<stdlib.h>typedef struct BinarySortTreeNode原创 2020-09-01 17:52:05 · 404 阅读 · 0 评论 -
哈夫曼编码 C/C++
哈弗曼编码需要用到哈弗曼树。如果不知道可以随便看看这里------------>构建哈弗曼树什么是哈夫曼编码?哈夫曼编码是一种可变字长编码。根据给定信息中字符出现的频次动态生成最优编码。常用于数据压缩。哈夫曼编码实现:哈夫曼编码要用到哈弗曼树,在一棵哈弗曼树的基础上,将哈弗曼树每个节点的左分支当做0,右分支当做1。与二进制编码01相对应。哈弗曼树中,节点对应哈夫曼编码应该为:A :1100B:1101C:111D:10E:0实现哈弗曼编码主要..原创 2020-07-08 11:12:28 · 337 阅读 · 0 评论 -
构建哈弗曼树 C/C++
什么是哈弗曼树?给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。权值:树的每个节点数据域data可以放一个特定的zhi数来代表它的值,可以叫做权值。路径:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。也就是经过的节点。路径长度:路径通路中分支的数目称为路径长度。也就是边的条数。带权路径长度:从根结点到该结点之间的路径长度与该结点的权的乘原创 2020-07-06 14:50:42 · 390 阅读 · 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 · 1881 阅读 · 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 · 4130 阅读 · 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 · 2911 阅读 · 0 评论 -
二叉树的非递归遍历 C/C++
前面用递归的方式实现了二叉树的遍历:https://blog.csdn.net/feel_myself_is_lowB/article/details/106897311下面用非递归方式实现二叉树遍历:原创 2020-06-28 17:34:29 · 282 阅读 · 0 评论 -
二叉树遍历(前序遍历、中序遍历、后序遍历、层次遍历)C/C++
二叉树的遍历方式有四种:遍历的时候记住,左子树一定是先于右子树遍历的,根最先遍历就是先序遍历,根在中间就是 中序遍历,根在最后遍历就是后序遍历。并且,遍历左子树和右子树的时候,遍历的方式也是 遵循大的遍历规则,比如二叉树遍历方式为先序遍历,那么左子树和右子树遍历的时候,也是 ...原创 2020-06-22 13:43:27 · 326 阅读 · 0 评论