二叉树有前序、中序、后序遍历
var root1 = {
name: 'a',
leftChild: {
name: 'b',
leftChild: {
name: 'd'
},
rightChild: {
name: 'e'
}
},
rightChild: {
name: 'c',
leftChild: {
name: 'f'
}
}
}
// 打印实现
// 前序遍历(中左右) abdecf
// 中序遍历(左中右) dbeafc
// 后序遍历(左右中) debfca
/** 递归方式**/
// 前序遍历
var ret = []
function preOrder(root) {
ret.push(root.name)
if(root.leftChild) {
preOrder(root.leftChild)
}
if(root.rightChild) {
preOrder(root.rightChild)
}
}
preOrder(root1)
console.info(ret.join(','))
// 中序遍历
var ret = []
function inOrder(root) {
if(root.leftChild) {
inOrder(root.leftChild)
}
ret.push(root.name)
if(root.rightChild) {
inOrder(root.rightChild)
}
}
inOrder(root1)
console.info(ret.join(','))
// 后序遍历
var ret = []
function postOrder(root) {
if(root.leftChild) {
postOrder(root.leftChild)
}
if(root.rightChild) {
postOrder(root.rightChild)
}
ret.push(root.name)
}
postOrder(root1)
console.info(ret.join(','))