一、遍历方式
按照顺序规则
1.先序遍历 2.中序遍历 3.后序遍历 4.层序遍历
按照实现方式
1.递归遍历 (先、中、后序)
2.迭代遍历(层次)
递归思想
1.确定边界 (递归停止下来的条件,return) 2.递归式调用
二、算法
准备一颗树结构
const root = {
val: 1,
left: {
val: 2,
left: {
val: 3
},
right: {
val: 4
}
},
right: {
val: 5,
left: {
val: 6
},
right: {
val: 7
}
}
}
先序遍历
遍历方式: 根 -> 左 -> 右
那么应该有的结果应是是: 1 2 3 4 5 6 7
实现
function preOrder(root) {
if (root === undefined) return // 如果没有后续结点,那么是undefined
console.log(root.val)
preorder(root.left)
preorder(root.right)
}
中序遍历
遍历方式: 左 -> 根 -> 右
那么应该有的结果应是是: 3 2 4 1 6 5 7
实现
function inOrder(root) {
if (root === undefined) return // 如果没有后续结点,那么是undefined
inOrder(root.left)
console.log(root.val)
inOrder(root.right)
}
后序遍历
遍历方式: 左 -> 右 -> 根
那么应该有的结果应是是: 3 4 2 6 7 5 1
实现
function postOrder(root) {
if (root === undefined) return // 如果没有后续结点,那么是undefined
postOrder(root.left)
postOrder(root.right)
console.log(root.val)
}
三、总结
1.函数命名暂且用preOrder inOrder postOrder
2.先序、中序、后序考察的是递归遍历,取决于根结点的遍历时间,递归终止条件为root结点为undefined