二叉树的构建
- 树的构造函数后面就直接简写(主要是针对数组中树的擦欧哦中)
一、 普通二叉树
function createTree(arr) {
const bt = new TreeNode(arr.shift());
let queue = [];
queue.push(bt);
while (arr.length) {
let cur = queue.shift();
cur.left = new TreeNode(arr.shift());
cur.right = new TreeNode(arr.shift());
cur.left && queue.push(cur.left);
cur.right && queue.push(cur.right);
}
return bt;
}
let arr = [1, 2, 3, 4, 5];
console.log(createTree(arr));
二 、完全二叉树
function TreeNode(data) {
this.data = data;
this.left = this.right = null;
}
function create(arr, i) {
if (i > arr.length - 1) {
return;
}
let t = new TreeNode(arr[i]);
t.left = create(arr, 2 * i + 1);
t.right = create(arr, 2 * i + 2);
return t;
}
let arr = [1, 2, 3, 4, 5, 6];
console.log(create(arr, 0));
三、 二叉搜索树
- 先序遍历,对输入数据与新的根节点比较(注意b,p两个指针配合查找!!!)
function BinarySortTree(arr) {
const bst = new TreeNode(arr.shift());
while(arr.length) {
let cur = new TreeNode(arr.shift());
let base = bst;
let parent;
while(true) {
parent = base;
if(cur.data < base.data) {
base = base.left;
if(!base) {
parent.left = cur;
break;
}
} else {
base = base.right;
if(!base) {
parent.right = cur;
break;
}
}
}
}
return bst;
}
let arr = [5, 2, 4, 7, 6];
console.log(BinarySortTree(arr));