#include "stdafx.h"
#include <iostream>
const int DimensionOfRoot=6;
void construct_optimal_BST(int root[][DimensionOfRoot],int i,int j)
{
int sr=0;
sr=root[i][j];
if(1==i && DimensionOfRoot-1==j)//this is a root node
std::cout<<"k"<<sr<<" is the root"<<std::endl;
if(i>sr-1) //process the left branch of the leaf
std::cout<<"d"<<sr-1<<" is the left child of k"<<sr<<std::endl;
else //not a leaf node,to add the left subtree
{
std::cout<<"k"<<root[i][sr-1]<<" is the left child of k"<<sr<<std::endl;
construct_optimal_BST(root,i,sr-1);
}
if(sr+1>j) //process the right branch of the leaf
std::cout<<"d"<<sr<<" is the right child of k"<<sr<<std::endl;
else //not a leaf node,to add the right subtree
{
std::cout<<"k"<<root[sr+1][j]<<" is the right child of k"<<sr<<std::endl;
construct_optimal_BST(root,sr+1,j);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int root[DimensionOfRoot][DimensionOfRoot]={{0,0,0,0,0,0},
{0,1,1,2,2,2},
{0,0,2,2,2,4},
{0,0,0,3,4,5},
{0,0,0,0,4,5},
{0,0,0,0,0,5}};
construct_optimal_BST(root,1,DimensionOfRoot-1);
return 1;
}
算法导论习题15.5-1解答
最新推荐文章于 2021-03-07 20:53:39 发布