// DFS 递归三序
function preorder(root, res = []) {
if (!root) return res;
res.push(root.val);
preorder(root.left, res);
preorder(root.right, res);
return res;
}
function inorder(root, res = []) {
if (!root) return res;
inorder(root.left, res);
res.push(root.val);
inorder(root.right, res);
return res;
}
function postorder(root, res = []) {
if (!root) return res;
postorder(root.left, res);
postorder(root.right, res);
res.push(root.val);
return res;
}
// DFS 迭代版(栈)— 以前序为例
function preorderIter(root) {
const res = [], stack = [root];
while (stack.length) {
const node = stack.pop();
if (!node) continue;
res.push(node.val);
stack.push(node.right); // 右先入栈
stack.push(node.left);
}
return res;
}
// BFS 层序(队列)
function levelOrder(root) {
if (!root) return [];
const res = [], queue = [root];
while (queue.length) {
const node = queue.shift();
res.push(node.val);
if (node.left) queue.push(node.left);
if (node.right) queue.push(node.right);
}
return res;
}