动态规划——最优二叉查找树
来源:互联网 发布:美国国籍 知乎 编辑:程序博客网 时间:2024/06/09 13:42
定义binary search tree:是由一些项目组成的二叉树,这些项目通常成为键,来自一个有序集合,通常满足以下条件:
(1)每个节点包含一个键;
(2)一个给定节点的左子树的键小于等于该节点的键;
(3)一个给定节点的右子树的键大于等于该节点的键;
深度depth:从根节点到该节点的唯一路径的边数;
树的深度是所有节点的最大深度;
若二叉树所有节点的两个子树的深度差都不超过1,则称该二叉树是平衡的;
定义数据类型:
struct nodeTyoe{keytpye key;nodetype *right;nodetype * left;}tyoedef nodeType* nodePointer;在二叉查找树中找出包含一个键的节点,假设这个件就在树中
void search(nodePointer tree,keytype keyin,nodePointer& p)//查找二叉树{bool found;p=tree;found=false;while(!found)if(p->key=keyin)found=true;else if(keyin<p->key)p=p->left;//查找key小,向左子节点前进else p=p->right;//查找key大,向右子节点前进 }
设pi是keyi作为查找键的概率,ci是在给定树中查找keyi所需的比较次数
则这棵树的平均查找时间是Σcipi,是我们希望最小化的值。
我们用A[i][j]来表示键keyi到keyj在树中最优值,A[i][i]=1*pi=pi。
可以得到、
A[i][j]=min{A[i][k-1]+A[k][j]}(i<=k<=j)+Σpm(i到j)
A[i][i]=pi
A[i][i-1]=A[j+1][j]=0
最优二叉树
void optsearchtree(int n,const float p[],float& minavg,index R[][])//p[i]是查找第i个键的概率 {index i,j,k,diagoanl;float A[n+1][n];for(i=0;i<=n;i++){A[i][i-1]=0;A[i][i]=p[i] ;R[i][i]=i;//R[i][j]包含了一颗最优树根节点处的键的索引,最优树中包含第i到j个键 R[i][i-1]=0;}A[n][n+1]=0;R[n][n+1]=0;for(diagonal=1;diagonal<=n-1;diagonal++)for(i=1;i<n-diagonal;i++){j=j+diagonal;A[i][j]=min{A[i][k-1]+A[k][j]}(i<=k<=j)+Σpm//(i到j)R[i][j]=mink;//等于最小值时的k值 } minavg=A[i][n]; }生成最优二叉树
nodePointer tree(index i,j){index k;nodePointer p;k=R[i][j];if(k==0)return NULL;else{p=new nodeType;p->key=key[k];p->left=tree(i,k-1);p->right=tree(k+1,j);return p;} }
阅读全文
0 0
- 动态规划——最优二叉查找树
- 动态规划——最优二叉查找树
- 动态规划——最优二叉查找树
- 动态规划——最优二叉查找树
- 动态规划算法—最优二叉查找树
- 动态规划--最优二叉查找树
- 最优二叉查找树(动态规划)
- 动态规划之-最优二叉查找树
- 动态规划 -- 最优二叉查找树
- 动态规划4-最优二叉查找树
- 动态规划4-最优二叉查找树
- 最优二叉查找树(动态规划)
- 动态规划-最优二叉查找树
- 动态规划--4.最优二叉查找树
- 动态规划—最优二叉搜索树
- 算法导论学习笔记(10)——动态规划之最优二叉查找树
- 算法导论 ch15 动态规划 最优二叉查找树
- 【算法学习】最优二叉查找树(动态规划)
- 马跳日
- 1134. Vertex Cover (25)
- "页面跳转"实例详解"SpringMVC注解"的作用与用法
- iOS 处理二叉树数据 实现多级表格
- Mybatis
- 动态规划——最优二叉查找树
- MYSQL(五)
- shell脚本中 数组的基本用法
- 面向对象-1
- Leetcode题解-5. Longest Palindromic Substring
- HDU 6208 The Dominator of Strings(字符串)
- Python网络入门
- ArrayList源码解析
- MTP模式下恢复手机误删数据方法(MX2、MX3亲测可用)