在這種情況下,它是一個二叉樹而不是二叉搜索樹,模板中只有一個參數是類型T.如主函數中所示,我不需要明確的min_height(v, 0,5),但min_height(v,0,5)就足夠了。但是,在二叉搜索樹的情況下,有兩個模板參數,用法不起作用。我想知道爲什麼?非常感謝你!繼續推導模板參數
#include <iostream>
#include<string>
#include<vector>
using namespace std;
template<typename T>
struct BTNode{
T data;
BTNode * left;
BTNode * right;
BTNode(T d, BTNode *left=NULL, BTNode * right=NULL): data(d) {}
};
template<typename T>
BTNode<T>* min_height(vector<T> &v, int left, int right){// here is different from my paper code
if(left<=right){
int mid=left+ (right-left)/2;
BTNode<T>* node=new BTNode<T>(v[mid]);
node->left=min_height(v, left, mid-1);
node->right=min_height(v, mid+1, right);
return node;
}
}
int main() {
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
v.push_back(6);
BTNode<int>* root=min_height(v, 0, 5);
return 0;
}
什麼是錯誤? – Pubby 2013-03-13 04:07:39
修復未使用的變量後,我在GCC 4.7.2上得到的所有內容都不是'min_height'的所有路徑都返回一個值。 – chris 2013-03-13 04:13:18
請參考我的上一個問題的鏈接:http://stackoverflow.com/questions/15349589/deducing-template-arguments – diane 2013-03-13 04:15:37