描述,一个节点为n的二叉节点,返回所有可能的二叉树,二叉树的最小节点值是1,比如5可以分为 left 4 right 1 和 left 1 right 4 。。。
function Node(v, left, right) {
this.v = v;
this.left = left;
this.right = right;
}
function n(v, left, right) {
return new Node(v, left, right)
}
let node = n(3, null, null);
function fn(node) {
if (node.v === 1) return [node];
let r = []
for (let a = 1; a < node.v; a++) {
let lefts = fn(n(a, null, null));
let rights = fn(n(node.v - a, null, null));
for (let i = 0; i < lefts.length; i++) {
for (let z = 0; z < rights.length; z++) {
let node1 = n(node.v);
let left = lefts[i];
let right = rights[z];
node1.left = left;
node1.right = right;
r.push(node1)
}
}
}
return r;
}