首页 > 其他分享 >Leecode 二叉树的前序遍历

Leecode 二叉树的前序遍历

时间:2024-03-17 20:23:10浏览次数:22  
标签:right TreeNode val res 前序 Leecode 二叉树 root ArrayList

Day2 刷题

  1. 我的思路:用数组list存储遍历结果,利用ArrayList的方法实现嵌套!
import java.util.*;

class Solution {
    // defining an arraylist
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> Traversal = new ArrayList<>();
        if(root==null){
            return Traversal;
        }
        else{
            Traversal.add(root.val);
            Traversal.addAll(preorderTraversal(root.left));
            Traversal.addAll(preorderTraversal(root.right));
            return Traversal;
        }
    }
}
  1. 力扣官方题解:思路基本一致,差别在于用了子方法preorder来代替嵌套。且官方用res来存储,我用addAll方法来完成嵌套所需
class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<Integer>();
        preorder(root, res);// 注意不用返回值,直接修改的是类里的对象
        return res;
    }

    public void preorder(TreeNode root, List<Integer> res) {
        if (root == null) {
            return;
        }
        res.add(root.val);
        preorder(root.left, res);
        preorder(root.right, res);
    }
}
  1. 二叉树的性质:
 * 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;
 *     }
 * }
 */

this是在类里面的意思,此外在编写代码时,需要什么时候把根节点的值存进list内,是判定不是空节点时。

  1. ArrayList的方法:add()添加,addAll()添加集合中所有元素,get()访问元素,set()修改元素,remove()删除元素,size()元素数量。

ArrayList<Integer> li=new ArrayList<>();// 存放整数元素

ArrayList<Character> li=new ArrayList<>();// 存放字符元素

标签:right,TreeNode,val,res,前序,Leecode,二叉树,root,ArrayList
From: https://www.cnblogs.com/xytang-mini-juan/p/18079080

相关文章

  • Leecode 搜索插入位置
    Day2刷题我的思路:利用二分法解决问题,不过由于情况没有好好分类,以及循环判定条件不合适,会出现超出运行时间的bug。classSolution{publicintsearchInsert(int[]nums,inttarget){intlength=nums.length;intStartIdx=0;intFinal......
  • Leecode 最长公共前缀
    Day1刷题此题没有写出来,仅附上力扣官方代码:classSolution{publicStringlongestCommonPrefix(String[]strs){if(strs==null||strs.length==0){return"";}Stringprefix=strs[0];intcount=strs.length;......
  • Leecode 将罗马数字转换为整型
    Day1刷题我的解题思路利用罗马数字与整型的转换规律,利用哈希表来生成键值对。classSolution{publicintromanToInt(Strings){intsum=0;HashMap<Character,Integer>RomanInt=newHashMap<Character,Integer>();RomanInt.put('I......
  • 【算法与数据结构】堆排序&&TOP-K问题之深入解析二叉树(三)
    文章目录......
  • 数据结构笔记(十四)二叉树的遍历(递归)
    四种访问方式:前序遍历,中序遍历,后序遍历,层序遍历这篇文章主要为前序,中序,后序遍历的递归形式,递归形式较为简单,后面更新遍历的循环形式较为复杂,建议使用递归形式#include<stdio.h>#include<stdlib.h>typedefcharE;typedefstructTreeNode*Node;structTreeNod......
  • Leecode 求两数之和
    Day1刷题我的解题思路是按照第一个元素往后排,不重复的找相加的组合,判断是否为target值,时间复杂度较高,为\(\mathcal{O}(n^2)\)。classSolution{publicint[]twoSum(int[]nums,inttarget){intflag=1;while(flag==1){for(in......
  • 每日一练:LeeCode-125、验证回文串【字符串+双指针】
    如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个回文串。字母和数字都属于字母数字字符。给你一个字符串s,如果它是回文串,返回true;否则,返回false。示例1:输入:s="Aman,aplan,acana......
  • 面试中可能问到的几种树结构(二叉树,平衡二叉树,红黑树,B树和B+树)
    二叉树的概念二叉树是一种树形结构,其特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且二叉树的子树有左右之分,其次序不能任意颠倒。平衡二叉树概念平衡二叉树,是二叉树的一种变形,左子树的深度和右子树的深度不能超过一。红黑树概念红黑树是一种自......
  • leedcode-翻转二叉树
    自己写的:classSolution:definvertTree(self,root:Optional[TreeNode])->Optional[TreeNode]:#创建一个新的TreeNode以存储反转后的树newroot=TreeNode()#如果输入的根节点为空,则返回空ifnotroot:......
  • Leecode Day3
    初始想法也是用双指针,问题在于没有灵活运用与运算(实现求和后结果满足二进制表达形式),未设置加位!(add);多了索引位置i,只需要指针i和j。当前位为空。错误代码如下:学习画图小匠的代码:https://leetcode.cn/problems/add-binary/solutions/2652640/javapython3cwei-yun-suan-s......