题目
给定一个非负整数n,返回n个节点一共能构成多少种二叉树
- 首先base case为当节点数量为0时,只能构成0种,为1时,只能构成1种,为2时能构成2种,当左数的节点数量m时,右树的节点数量为 n - m -1,递归结构为 f(m)*f(m-n-1),遍历规则为从左数0个节点到n-1个节点,右树丛n-1-左数节点到0个节点的所有情况
function process(num) {
if (num < 0) {
return 0;
}
if (num == 1) {
return 1;
}
if (num == 2) {
return 2;
}
let res = 0;
for (let i = 0; i <= num - 1; i++) {
res += process(i) * process(num - i - 1);
}
return res;
}