力扣第95题 不同的二叉搜索树II

力扣第95题 不同的二叉搜索树II

给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。

struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

 vector<TreeNode*> generateTree(int start, int end)
 {
	 vector<TreeNode*> vect;
	 if (start > end)
	 {
		 vect.push_back(NULL);
		 return vect;
	 }
	 for (int i = start; i <= end; i++)
	 {
		 vector<TreeNode*> left = generateTree(start, i - 1);
		 vector<TreeNode*> right = generateTree(i + 1, end);
		 for (vector<TreeNode*>::iterator itorl = left.begin(); itorl != left.end(); itorl++)
		 {
			 for (vector<TreeNode*>::iterator itorr = right.begin(); itorr != right.end(); itorr++)
			 {
				 TreeNode* pNode = new TreeNode(i);
				 pNode->left = *itorl;
				 pNode->right = *itorr;
				 vect.push_back(pNode);
			 }
		 }
	 }
	 return vect;
 }

 vector<TreeNode*> generateTrees(int n) 
 {
	 vector<TreeNode*> vect;
	 if (n <= 0)
	 {
		 return vect;
	 }
	 return generateTree(1, n);
 }

posted on 2020-02-27 00:26  woodjay  阅读(169)  评论(0编辑  收藏  举报

导航