二叉树(上)
Posted 编程加油站
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树(上)相关的知识,希望对你有一定的参考价值。
一、什么是树?
![二叉树(上)](https://image.cha138.com/20210423/bf6376bdd59d47e99c5f7f9f420eced2.jpg)
![二叉树(上)](https://image.cha138.com/20210423/18278aca26f24fe1bc02e2292936050b.jpg)
![二叉树(上)](https://image.cha138.com/20210423/926de25701c94fffb46bdb8b5bb89399.jpg)
![二叉树(上)](https://image.cha138.com/20210423/634304e3af8343c093fab93eb4cc66dc.jpg)
二、二叉树
![二叉树(上)](https://image.cha138.com/20210423/77b6da849b024a5fa5fd66f670250247.jpg)
![二叉树(上)](https://image.cha138.com/20210423/7d73c2550d6a469894a018758fb54676.jpg)
![二叉树(上)](https://image.cha138.com/20210423/03e09675f19541c89b8086351ebf0422.jpg)
![二叉树(上)](https://image.cha138.com/20210423/78a7e3a53c63471aa64732c54d1f8172.jpg)
三、二叉树的遍历
前序遍历的递推公式:
preOrder(r) = print r->preOrder(r->left)->preOrder(r->right)
中序遍历的递推公式:
inOrder(r) = inOrder(r->left)->print r->inOrder(r->right)
后序遍历的递推公式:
postOrder(r) = postOrder(r->left)->postOrder(r->right)->print r
const tree = {
value: 1,
left: {
value: 2,
left: {
value: 4
},
right: {
value: 5
}
},
right: {
value: 3,
left: {
value: 6
},
right: {
value: 7
}
}
}
let arrDLR = []
// 前序遍历(根左右)
function DLR(obj) {
arrDLR.push(obj.value)
obj.left && DLR(obj.left)
obj.right && DLR(obj.right)
}
let arrLDR = []
// 中序遍历(左根右)
function LDR(obj) {
obj.left && LDR(obj.left)
arrLDR.push(obj.value)
obj.right && LDR(obj.right)
}
let arrLRD = []
// 后序遍历(左右根)
function LRD(obj) {
obj.left && LRD(obj.left)
obj.right && LRD(obj.right)
arrLRD.push(obj.value)
}
DLR(tree)
console.log(arrDLR) //[ 1, 2, 4, 5, 3, 6, 7 ]
LDR(tree)
console.log(arrLDR) // [ 4, 2, 5, 1, 6, 3, 7 ]
LRD(tree)
console.log(arrLRD) // [ 4, 5, 2, 6, 7, 3, 1 ]
以上是关于二叉树(上)的主要内容,如果未能解决你的问题,请参考以下文章