二叉树的遍历。和怎么得到结果的,开始不太好理解,后来发现一个简单方法,供参考,水平有限,有问题,请指正。
如以上二叉树, 前序遍历 (D L R) ,中序遍历 (L D R),后序遍历 (LRD),代码如下
// 树的表示
const tree = {
val: 1,
left: {
val: 2,
left: { val: 4 },
right: {val: 5}
},
right: {
val: 3
}
};
function DLR(node) {
if (node) {
console.log(node.val)
DLR(node.left)
DLR(node.right)
}
}
function LDR(node) {
if (node) {
LDR(node.left)
console.log(node.val)
LDR(node.right)
}
}
function LRD(node) {
if (node) {
LRD(node.left)
LRD(node.right)
console.log(node.val)
}
}
理解, 怎么简单去理解,得到结果呢?
- 比如 前序是 根 -> 左 -> 右
- 以上二叉树 123 的顺序就是 1->2->3
- 在245的树,顺序是 2->4->5
- 组合以上结果 2->4->5 替换 1->2->3 中的2
- 得到结果 1->2->4->5->3