最近也有在补算法这方面的东西,如图所示的一棵二叉树,左子节点小于父节点,父节点小于自己的右子节点,那么如何构建一棵这样的二叉树呢?
我通过下面JS语句进行了演示。分享一下。
function BinaryTree(){
function Node (key){
this.key = key;
this.left = null;
this.right = null;
}
// 根节点
let root = null
// 插入二叉树
this.insert = function(key){
let node = new Node(key)
if(!root){
root = node
}else{
insertNode(root,node)
}
}
function insertNode(node, newNode){
// 判断新节点和跟节点的大小
if(node.key > newNode.key){
// 如果节点的左子节点为空,那么新节点直接作为该节点的子节点,否则再跟下面的子节点做比较
if(node.left === null){
node.left = newNode
}else{
insertNode(node.left,newNode)
}
}else{
if(node.right === null){
node.right = newNode
}else{
insertNode(node.right,newNode)
}
}
}
}
let arr = [8,3,10,1,6,14,4,7,13]
let binaryTree = new BinaryTree()
arr.forEach(elt=>{
binaryTree.insert(elt)
})