- 博客(6)
- 收藏
- 关注
原创 AVL树的插入,删除,查找
在上一篇文章中回顾了BST的相关操作,而AVL树其实就是BST的基础上加上了平衡的条件限制。也就是针对把每个节点作为根节点的树中的左右子树的高度差不能相差超过一。首先贴出整个程序的代码:class TreeNode { int value; int height; TreeNode left; TreeNode right; TreeNode(int va...
2018-05-29 17:08:45
1895
1
原创 BST树的插入,删除,查找(递归和非递归),先序,中序,后序(递归和非递归)
关于二叉查找树的操作还是挺重要的,所以在此实现了BST的相关操作。一、BST树的相关定义二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。...
2018-05-22 21:23:54
994
原创 关于贪心选择正确性的证明
看了一些大佬们的博客,暂时小结如下:概念:贪心选择性质:一个全局最优解可以通过局部最优得到。即存在一个最优解是以贪心选择开始的。证明思路:先考察一个全局最优解,然后对该解加以修改(一般是采用“剪枝”技巧),使其采用贪心选择,这个选择将原问题变成一个相似的、但是更小的问题。例子:1 、部分背包问题的贪心选择的证明: 贪心选择:选择单位价格最高的来拿 正确性证明:
2018-01-11 22:42:14
13834
3
原创 关于利用Dijkstra和DFS进行多条件选择路径问题范例
在刷PAT甲级题目时,发现有好几题都是设计到Dijkstra+DFS来解决多条件选择路径的问题。本文利用PAT甲级1087作为列题进行分析: 首先放上代码:#include <bits/stdc++.h>#define INF 65535using namespace std;map<string,int> M;map<int,string> M2; int happy[205];int
2017-12-04 18:39:00
409
原创 关于BST的插入,查找和删除
一、建立BST节点结构struct node { int key; node *parent,*left,*right;};同时定义一个跟节点和一个空节点node *NIL,*root;二 、进行插入操作首先判断树中如果没有节点,那么直接将要插入的节点当做根节点,并且设置它的父节点为NIL;如果树中有根节点了,那么定义两个node节点x和y,x指向需要插到的位置,y指向x的父节
2017-08-11 22:26:26
1632
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人