输入n,获得1-n生成的所有BTS
class Solution { public: vector<TreeNode *> genTreeNodes(int left,int right) { vector<TreeNode *> nodes; nodes.clear(); if(left > right) { nodes.push_back(NULL); return nodes; } if(left == right) { TreeNode * node = new TreeNode(left); nodes.push_back(node); return nodes; } for(int i = left;i<= right;i++) { vector<TreeNode *>lefts,rights; lefts.clear(); rights.clear(); lefts = genTreeNodes(left,i-1); rights = genTreeNodes(i+1,right); // 交替枚举left and right for(int l = 0;l < lefts.size();l++) { for(int r = 0; r < rights.size();r++) { TreeNode *node = new TreeNode(i); node->left = lefts[l]; node->right = rights[r]; nodes.push_back(node); } } } return nodes; } vector<TreeNode *> generateTrees(int n) { vector<TreeNode *>nodes; nodes.clear(); nodes = genTreeNodes(1,n); return nodes; } };