刷题专栏(十):二叉树的前序遍历

简介: 刷题专栏(十):二叉树的前序遍历

前言

二叉树的题目还有很多,我打算把这些全做了。

今天的这道也是关于二叉树的题目,算得上是二叉树题目中比较简单的题目了,虽然这道题本身难度就是处于简单系列。

还是一起来看一下吧,顺便加深一下对二叉树的理解。

image.png

算法题:二叉树的前序遍历

本道题的题意,是要将一个二叉树中的值全部读取到一个list集合中。

这从题目本上来看其实很简单。

这里有一个非常重要的点需要注意一下,题目示例中并没有给出二叉树左右节点都有值的情况,并不是不会存在的,所以要把左右节点都考虑进去才行。

具体的一些实现思路,主要就是递归,从上几次的经验来看,递归是处理二叉树最有效的方式了。

通过递归方法,将左右子节点的值也一并放置到List集合中,最后就是我们要的预期结果了。

代码展示

运行代码如下,采用的就是上述方案,请各位查漏补缺。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<Integer>();
        digui(root, list);
        return list;
    }
    public void digui(TreeNode root, List<Integer> list) {
        if (root == null) {
            return;
        }
        list.add(root.val);
        digui(root.left, list);
        digui(root.right, list);
    }
}

执行结果如下

结果可以说是相当不错了,二叉树的递归,加上List集合的搭配可以解决很多类型的问题。

image.png

总结

这道题本身并不难,二叉树的题目也做了好几道了,自然也就是递归方法来处理此类问题。

目录
相关文章
|
4月前
|
算法 索引
leetcode654最大二叉树刷题打卡
leetcode654最大二叉树刷题打卡
19 0
|
5月前
|
算法
刷题专栏(六):二叉树的最大深度
刷题专栏(六):二叉树的最大深度
38 0
|
5月前
|
存储 算法
刷题专栏(十一):二叉树的后序遍历
刷题专栏(十一):二叉树的后序遍历
37 0
|
5月前
|
算法
刷题专栏(八):平衡二叉树
刷题专栏(八):平衡二叉树
33 0
|
5月前
|
算法
六六力扣刷题二叉树之层序遍历
六六力扣刷题二叉树之层序遍历
38 0
|
5月前
|
算法
六六力扣刷题二叉树之递归遍历
六六力扣刷题二叉树之递归遍历
34 0
|
5月前
|
存储 算法
每日一题:LeetCode-102.二叉树的层序遍历
每日一题:LeetCode-102.二叉树的层序遍历
|
6月前
|
存储 算法
代码随想录算法训练营第十三天 | LeetCode 144. 二叉树的前序遍历、LeetCode 145. 二叉树的后序遍历、LeetCode 94. 二叉树的中序遍历
代码随想录算法训练营第十三天 | LeetCode 144. 二叉树的前序遍历、LeetCode 145. 二叉树的后序遍历、LeetCode 94. 二叉树的中序遍历
47 0
|
10月前
|
Cloud Native
【刷题日记】590. N 叉树的后序遍历
本次刷题日记的第 5 篇,力扣题为:【刷题日记】590. N 叉树的后序遍历 ,简单
|
10月前
|
Cloud Native
【刷题日记】589. N 叉树的前序遍历
本次刷题日记的第 4 篇,力扣题为:589. N 叉树的前序遍历 ,简单