ノード値 n を持つすべてのバイナリ ツリー

説明: ノード n を持つバイナリ ノードは、考えられるすべてのバイナリ ツリーを返します。バイナリ ツリーの最小ノード値は 1 です。たとえば、5 は、左 4 右 1 と左 1 右 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