深度与广度优先遍历

140 阅读1分钟

深度优先遍历

interface TreeNode {
  value: string
  children?: TreeNode[]
}

const tree: TreeNode = {
  value: 'A',
  children: [
    { value: 'B', children: [{ value: 'D', children: [{ value: 'E' }] }] },
    { value: 'C' },
  ],
}

function dfs(tree: TreeNode) {
  console.log(tree.value)
  if (tree.children) tree.children.forEach((child) => dfs(child))
}

dfs(tree)

广度优先遍历

interface TreeNode {
  value: string
  children?: TreeNode[]
}

const tree: TreeNode = {
  value: 'A',
  children: [
    { value: 'B', children: [{ value: 'D', children: [{ value: 'E' }] }] },
    { value: 'C' },
  ],
}
function bfs(tree: TreeNode) {
  const queue: TreeNode[] = [tree]
  while (queue.length > 0) {
    const node = queue.shift()
    console.log(node?.value)
    if (node?.children) queue.push(...node.children)
  }
}

bfs(tree)