树的遍历
- 遍历顺序是根据访问父结点的时序确定的
先序遍历
- 优先访问父结点,然后依次访问左子结点,右子结点
const traverse = (parentNode, callback) => {
if (parentNode !== null) {
// parent node
callback(parentNode);
// left node
traverse(parentNode.left, callback);
// right node
traverse(parentNode.right, callback);
}
};
中序遍历
- 优先访问左子结点,然后访问父结点,最后访问右子结点
const traverse = (parentNode, callback) => {
if (parentNode !== null) {
// left node
traverse(parentNode.left, callback);
// parent node
callback(parentNode);
// right node
traverse(parentNode.right, callback);
}
};
后序遍历
- 优先访问左右子结点,最后访问父结点
const traverse = (parentNode, callback) => {
if (parentNode !== null) {
// left node
traverse(parentNode.left, callback);
// right node
traverse(parentNode.right, callback);
// parent node
callback(parentNode);
}
};