JS-树:二叉树前序遍历(先序遍历)


文章目录


前言

最近总结一下树的算法,研究树相关的知识。


一、前序遍历-递归

1、从根出发,然后左边然后右边

2、如下输入是:a b d e c f g

javascript 复制代码
  // 前序遍历
  const tree = {
    val: 'a',
    left: {
      val: 'b',
      left: { val: 'd', left: null, right: null },
      right: { val: 'e', left: null, right: null },
    },
    right: {
      val: 'c',
      left: { val: 'f', left: null, right: null },
      right: { val: 'g', left: null, right: null },
    },
  }
	
  // 前序遍历
console.log(fun1(tree))

function fun1(root: any) {
  const arr: any[] = []

  const fun = (node: any) => {
    if (node) {
      arr.push(node.val)
      fun(node.left)
      fun(node.right)
    }
  }

  fun(root)

  return arr
}

二、前序遍历-队列

1、从根出发,然后左边然后右边

2、如下输入是:a b d e c f g

javascript 复制代码
function fun2(root: any) {
  const arr: any[] = []
  const stack = [root]
  while (stack.length > 0) {
    const o = stack.pop()
    arr.push(o.val)
    o.right && stack.push(o.right)
    o.left && stack.push(o.left)
  }
  return arr
}

总结

这就是树的二叉树前序遍历(先序遍历),希望能帮助到你!

相关推荐
再__努力1点几秒前
【50】OpenCV背景减法技术解析与实现
开发语言·图像处理·人工智能·python·opencv·算法·计算机视觉
Slow菜鸟几秒前
Java项目基础架构(三)| 日志统一处理
java·开发语言
qq_58956810几秒前
Maven学习记录
java·开发语言
EB_Coder2 分钟前
前端面试题-JavaScript高级篇
前端·javascript·面试
豐儀麟阁贵6 分钟前
9.2连接字符串
java·开发语言·算法
浩瀚地学6 分钟前
【Java】方法
java·开发语言·经验分享·笔记
E_ICEBLUE6 分钟前
使用 Java 将 PowerPoint 转换为 PDF 的完整指南
java·开发语言·pdf·powerpoint·ppt
网安老伯6 分钟前
计算机网络:网络安全(网络安全概述)
开发语言·数据库·python·计算机网络·web安全·网络安全·php
yellowCodeRabbit11 分钟前
最近整理了套 Java 题库,还顺手搞了个刷题应用…
java·开发语言·资料
枫叶丹412 分钟前
【Qt开发】Qt窗口(六) -> QMessageBox 消息对话框
c语言·开发语言·数据库·c++·qt·microsoft