一、二叉樹概念
二叉樹(binary tree)是一顆樹,其中每個節點都不能有多於兩個的兒子。
二叉樹的插入,在這里其實是對於一個二叉查找樹的插入。
使二叉樹成為二叉查找樹的性質是,對於樹中的每個節點X,它的左子樹中所有項的值小於X中的項目,而它的右子樹所有的項的值大於X中的項。
如下圖,兩顆都是二叉樹,左邊的樹是查找樹,右邊的樹則不是。右邊的樹在其項為6的節點(該節點正好是根節點)的左子樹中,有一個節點的項是7。

接下來我們要實現二叉樹的插入:
eg: 對於[ 2, 5, 4, 1, 3, 6] =>

二、實現思路
1.實例化node節點
若根節點為空,便將newNode賦給root節點;
若根節點存在,則插入新節點。
2.插入左子樹或右子樹
1) 如果newNode小於node
1.如果node.left(左孩子)為空,newNode賦給node.left
2.否則再次比較newNode < node.left
2) 如果newNode大於node
1.如果node.right(右孩子)為空,newNode賦給node.right
2.否則再次比較newNode> node.right
二、代碼實現
var nodes = [2, 5, 4, 1, 3, 6];
var Node = function (key) {
this.key = key;
this.left = null;
this.right = null;
}
let root = null;
function insert(key) {
let node = new Node(key);
if (root == null)
root = node;
else
insertNode(root, node);
}
function insertNode(root, node) {
if (root.key > node.key) {
if (root.left)
insertNode(root.left, node)
else
root.left = node;
}
if (root.key < node.key) {
if (root.right)
insertNode(root.right, node)
else
root.right = node;
}
}
nodes.forEach(function (key) {
insert(key);
})
insert(0);
console.log(root);
