节点值为n的全部二叉树

描述,一个节点为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;
}

猜你喜欢

转载自blog.csdn.net/qq_29334605/article/details/114407231