解题思路

什么是二叉树的前序遍历?简单来说就是“根左右”,展开来说就是对于一颗二叉树优先访问其根节点,然后访问它的左子树,等左子树全部访问完了再访问其右子树,而对于子树也按照之前的访问方式,直到到达叶子节点。

从上述前序遍历的解释中我们不难发现,它存在递归的子问题:每次访问一个节点之后,它的左子树是一个要前序遍历的子问题,它的右子树同样是一个要前序遍历的子问题。那我们可以用递归处理:

终止条件: 当子问题到达叶子节点后,后一个不管左右都是空,因此遇到空节点就返回。
返回值:每次处理完子问题后,就是将子问题访问过的元素返回,依次存入了数组中。
本级任务:每个子问题优先访问这棵子树的根节点,然后递归进入左子树和右子树。

因此处理的时候,过程就是:

step 1:准备数组用来记录遍历到的节点值,Java可以用List,C++可以直接用vector。
step 2:从根节点开始进入递归,遇到空节点就返回,否则将该节点值加入数组。
step 3:依次进入左右子树进行递归。

import java.util.*;/** public class TreeNode {*   int val = 0;*   TreeNode left = null;*   TreeNode right = null;*   public TreeNode(int val) {*     this.val = val;*   }* }*/public class Solution {List<Integer> list = new ArrayList<>();/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param root TreeNode类 * @return int整型一维数组*/public int[] preorderTraversal (TreeNode root) {// write code hereList<Integer> list = preOrder(root);int[] res = new int[list.size()];for(int i = 0;i<list.size();i++){res[i]=list.get(i);}return res;}List<Integer> preOrder(TreeNode node   ){if(node == null){return list;}list.add(node.val);preOrder(node.left);preOrder(node.right);return list;}}

【算法刷题1】二叉树的前序遍历相关推荐

  1. 力扣刷题之二叉树的层序遍历

                                                      Welcome to you, 每日一刷系列 二叉树的层序遍历 二叉树的层序遍历II 二叉树的右视图 ...

  2. 二叉树的前序遍历-python

    leetCode第144题 二叉树的前序遍历 链接:https://leetcode-cn.com/problems/binary-tree-preorder-traversal 给你二叉树的根节点 ...

  3. 四 . LeetCode标签刷题——树/二叉树(一) 算法部分

    各种二叉树的介绍汇总: 二叉树:最多有两棵子树的树被称为二叉树 满二叉树:二叉树中所有非叶子结点的度都是2,且叶子结点都在同一层次上 完全二叉树:如果一个二叉树与满二叉树前m个节点的结构相同,这样的二 ...

  4. LeetCode算法刷题目录 (Java)

    目录 1.数学基础 1.1.位运算 1.2.其它 2.数据结构 2.1.线性表 2.1.1.数组(双指针) 2.1.2.链表(双指针) 2.1.3.栈 2.1.4.队列 2.1.5.字符串 2.1.6 ...

  5. 刻意练习:LeetCode实战 -- 二叉树的前序遍历

    背景 今天,第二期基础算法(Leetcode)刻意练习训练营 的打卡任务是二叉树的中序遍历,由于二叉树的遍历方式通常来说有四种:前序遍历.中序遍历.后序遍历以及层次遍历,而LeetCode也有二叉树的 ...

  6. 搬砖试金石!github星标7W算法刷题宝典,还愁拿不下大厂offer?

    前言 这几年IT技术蓬勃发展,日新月异,对技术人才的需求日益增长,程序员招聘市场也如火如荼.在有限的三五轮面试中,国外流行让面试者编程解决某些数据结构和算法的题目,通过观察面试者编码的熟练程度.思考的 ...

  7. 算法刷题路线总结与相关资料分享

    算法刷题路线总结与相关资料分享 前言 一.算法刷题路线总结 二.算法题刷题步骤 三.基础数据结构知识汇总 1.时间复杂度 2.空间复杂度 3.线性表 4.栈与队列 5.树 四.基础算法知识汇总 1.递 ...

  8. 二叉树的前序遍历(Java)

    二叉树的前序遍历 (牛客网-牛客题霸算法篇-NC193) 题目描述 给定一个二叉树的根节点 root ,返回它节点值的前序遍历. 代码实现 import java.util.*; /** public ...

  9. 二叉树之前序遍历、中序遍历、后续遍历

    刷leetcode的时候,看到三道题:145. 二叉树的后序遍历.94. 二叉树的中序遍历.144. 二叉树的前序遍历.正好趁着这三道题,回顾一下二叉树的遍历算法. 二叉树的前序遍历:先遍历根,再遍历 ...

最新文章

  1. char类型怎么输入 c语言_还没搞懂C语言指针?这里有最详细的纯干货讲解(附代码)...
  2. linux netstat端口占用,Linux系统使用 netstat 查看和检查系统端口占用情况
  3. 关于计算机视觉的那些论文 | CCF推荐论文导读
  4. 【WPF】使用控件MediaElement播放视频
  5. Turn over a new leaf
  6. css 选择一列表菜单,css实现菜单列表随滚动条指定到对应内容
  7. crudandroidandroid——CRUD(在上一篇博客的基础上)
  8. mysql 删除多余帐号_安装完mysql数据库后的优化(删除多余用户和数据库)
  9. Topic交换器-编写消费者
  10. TwinCAT 3 系统程序
  11. 如何免费低价获取一切资源?​
  12. linux 下安装openoffice服务 百度文库在线预览 doc转pdf、pdf转swf格式
  13. whois信息收集企业备案信息
  14. 001,Python微信接龙脚本与腾讯会议定时挂网课脚本
  15. HTTP请求头字段解释
  16. Windows CMD中的findstr命令详解
  17. 天津达内聊H5 软键盘兼容方案
  18. java用mysql方便吗_面试题总结:可能是全网最好的MySQL重要知识点
  19. DayDayUp:上海地铁线路高清图、1~17号地铁线路各站点名称及对应路线集合之详细攻略
  20. java实现弹幕效果_css3实现蒙版弹幕功能

热门文章

  1. 05CRecordset类
  2. 计算机组成原理 微指令编码_计算机组成原理(指令)
  3. python编码操作技巧总结
  4. R包ggseqlogo |绘制序列分析图
  5. M1芯片Mac也可以安装Windows系统啦 使用PD16虚拟机安装ARM版Windows10教程
  6. 提高篇 第一部分 基础算法 第4章 广搜的优化技巧
  7. phpexcel的使用方法详细介绍
  8. Android学习之网上商城(上)
  9. centos7配置python3_Centos7安装并配置Python3环境
  10. python中left是什么意思_Python left