数据
const tree = {
value: 0,
left: {
value: 1,
left: {
value: 3,
left: {
value: 6,
},
right: {
value: 7,
},
},
right: {
value: 4,
left: {
value: 8,
left: {
value: 11,
},
right: {
value: 12,
},
},
},
},
right: {
value: 2,
left: {
value: 5,
left: {
value: 9,
},
right: {
value: 10,
right: {
value: 13,
},
},
},
},
};
前序遍历
function frontMap(tree) {
if (tree == null) return;
console.log(tree.value);
frontMap(tree.left);
frontMap(tree.right);
}
中序遍历
function centerMap(tree) {
if (tree == null) return;
centerMap(tree.left);
console.log(tree.value);
centerMap(tree.right);
}
后序遍历
function backMap(tree) {
if (tree == null) return;
backMap(tree.left);
backMap(tree.right);
console.log(tree.value);
}
层序遍历
bfs广度优先
const levelOrderBottom = function (root) {
if (!root) return []
let res = [],
queue = [root]
while (queue.length) {
let curr = [],
temp = []
while (queue.length) {
let node = queue.shift()
// let node = queue.splice(0,1)[0]
curr.push(node.val)
if (node.left) temp.push(node.left)
if (node.right) temp.push(node.right)
}
res.push(curr)
queue = temp
}
return res.reverse()
}
dfs深度优先
const levelOrderBottom = function (root) {
const res = []
var dep = function (node, depth) {
if (!node) return
res[depth] = res[depth] || []
res[depth].push(node.val)
dep(node.left, depth + 1)
dep(node.right, depth + 1)
}
dep(root, 0)
return res.reverse()
}
参考:mp.weixin.qq.com/s/gfvV_MFbH…