构建一个平衡的二叉树

时间:2016-11-05 23:37:08

标签: javascript recursion binary-tree



const Tree = function(value){
  this.value = value
  this.right = null
  this.left = null
}


Tree.prototype.insert = function(number){
  if(this.left === null){
    this.left = new Tree(number)
  } else if(this.right === null){
    this.right = new Tree(number)
  } else {
    this.left.insert(number)
  }
}

const arbre = new Tree(10)

arbre.insert(5)
arbre.insert(2)
arbre.insert(1)
arbre.insert(20)
arbre.insert(6)

console.log(JSON.stringify(arbre,null,4))




我正在尝试构建一个平衡的二叉树。这意味着每次插入一个值时,它将首先填充左节点,然后填充右节点,依此类推。这样的事情:



 0
/ \
1  2
/\ /
34 5




我的代码继续在左侧构建,但不会在右侧返回以维持树的平衡。 它的确如下:



      0
     / \
     1   2
     /\ 
     34
    /
    5




0 个答案:

没有答案