二叉树
斜树
分支倒向一边的树
满二叉树
所有叶结点同处于最底层(非底层结点均是内部结点),一个深度为k(>=-1)且有2^(k+1) - 1个结点。如图
完全二叉树
如果一个二叉树与满二叉树前m个节点的结构相同,这样的二叉树被称为完全二叉树
也就是说,如果把满二叉树从右至左、从下往上删除一些节点,剩余的结构就构成完全二叉树
二叉树的遍历方式
前序遍历:
递归遍历 根 -> 左 -> 右
中序遍历
递归访问 左 -> 根 -> 右
后序遍历
递归访问: 左 -> 右 -> 根
层序遍历
function cengxu(nodes, res = []) {
let nextNodes = [];
function pushLR(node) {
res.push(node.value);
node.lchild && nextNodes.push(node.lchild);
node.rchild && nextNodes.push(node.rchild);
}
if (Array.isArray(nodes)) {
nodes.forEach(node => {
pushLR(node);
})
} else if (nodes) {
pushLR(nodes);
}
return nextNodes.length ? cengxu(nextNodes, res) : res;
}
function foreSearch(node, res = []) {
if (node) {
res.push(node.value);
foreSearch(node.lchild, res);
foreSearch(node.rchild, res);
return res;
}
}
function midSearch(node, res = []) {
if (node) {
midSearch(node.lchild, res);
res.push(node.value);
midSearch(node.rchild, res);
return res;
}
}
function backSearch(node, res = []) {
if (node) {
backSearch(node.lchild, res);
backSearch(node.rchild, res);
res.push(node.value);
return res;
}
}