0

二分探索木ではなく二分木であるこの場合、テンプレートには T 型の引数が 1 つしかありません。メイン関数で示したように、明示的な min_height(v, 0, 5) は必要ありませんが、min_height (v, 0, 5) で十分です。ただし、二分探索木の場合、テンプレート引数が 2 つあり、使用法が機能しません。なぜ知りたいのですか?どうもありがとうございました!

#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;
}
4

1 に答える 1