Java数据结构刷题
分析Java数据结构的刷题日常
Flying`
这个作者很懒,什么都没留下…
展开
-
【浅刷Java数据结构】前序、中序、后序遍历的非递归实现
前序、中序、后序遍历的非递归实现的总体思想:利用栈的特点,然后就看着二叉树和中序遍历的序列,想一想以怎样的入栈出栈的方式才能模拟出来,我感觉没有任何的规律,就是一步一步凑出来的。自己能想出来,那就相当可以想不出来,就记住别人想好的方法前序遍历的非递归实现链接: LeetCode 144.二叉树的前序遍历思路:先将根节点入栈出栈顶元素,add到链表。将栈顶元素的左右子树的根节点入栈(为空时,就没必要入栈)。入栈的时候,先入右树,再入左树,这样就可以在出栈的时候先出左后出右。原创 2022-05-27 21:17:02 · 577 阅读 · 0 评论 -
【浅刷Java数据结构】Leetcode 606 根据二叉树创建字符串
链接: Leetcode 606 根据二叉树创建字符串整体思路:题目要求按照前序遍历的方式遍历。(根(左子树)(右子树))根为空直接返回。根不为空时:看左右子树是否空,就可以分类讨论:左树为空,右树为空左树为空,右树不为空(比较特殊)左树不为空,右树为空左树不为空,右树不为空class Solution { public void tree2strChild(TreeNode root,StringBuilder s) { if(root==n原创 2022-05-27 12:00:47 · 123 阅读 · 0 评论 -
【浅刷Java数据结构】LeetCode 106 从中序与后序遍历序列构建二叉树
链接: LeetCode 106 从中序与后序遍历序列构建二叉树思路:和从中序与前序遍历序列构建二叉树 的思路差不多不同之处就是:这里遍历后序数组时,是从后往前遍历,创建子树时,先创建右子树,再创建左子树。class Solution { public int postIndex=0; public TreeNode buildTreeChild(int[] inorder, int[] postorder,int begin,int end){ if(begin原创 2022-05-27 11:28:03 · 100 阅读 · 0 评论 -
【浅刷Java数据结构】LeetCode 105 从前序与中序遍历构建二叉树
链接: LeetCode 105 从前序与中序遍历构建二叉树总体思路:二叉树 = 根结点 + 左子树 + 右子树对于前序遍历中的每个结点,他们都可以看作一个根节点,他们都有自己的左右子树每个结点之间的关系呢,就可以根据中序遍历断定代码:class Solution { public int preIndex=0; public TreeNode buildTreeChild(int [] preorder, int[] inorder,int inbegin,int i原创 2022-05-26 18:22:24 · 92 阅读 · 0 评论 -
【浅刷Java数据结构】二叉搜索树与双向链表
题目链接: 二叉搜索树与双向链表思路1:搜索二叉树转换成有序双向链表 = 左子树构建得双向有序链表+根节点+右子树构建得双向有序链表用图分析:代码:public class Solution { public TreeNode CreateList(TreeNode pCur){ if(pCur==null){ return null; } TreeNode leftTree = CreateList(pCur原创 2022-05-26 15:48:06 · 273 阅读 · 0 评论 -
【浅刷Java数据结构】牛客 二叉树遍历
题目:: 二叉树遍历先序创建树的思路:先创建根节点,再创建其左子树,再创建其右子树。import java.util.*;class TreeNode{ public char val; public TreeNode left; public TreeNode right; public TreeNode(char val){ this.val=val; }}public class Main{ public static i原创 2022-05-23 22:07:30 · 178 阅读 · 0 评论 -
【浅刷Java数据结构】LeetCode 101 对称二叉树
链接: LeetCode 101 对称二叉树整体思路:情况分析:leftTree为空,rightTree不为空——falseleftTree不为空,rightTree为空——falseleftTree为空,rightTree为空——trueleftTree不为空,rightTree不为空——可能为true(当左树的左树和右树的右树对称,左树的右树和右树的左树对称,并且leftTree.val==rightTree.val)总结:因为返回的结果只有两种,true和false,所以可以简原创 2022-05-23 20:57:32 · 138 阅读 · 0 评论 -
【浅刷Java数据结构】LeetCode 110 平衡二叉树
链接: LeetCode 110 平衡二叉树解法1:时间复杂度为O(n^2)思路:某根节点点的左右子树都是平衡二叉树,并且自己的左右子树的最大高度差小于1,即为平衡二叉树class Solution { public int maxDepth(TreeNode root) {//求以某个结点为根节点的深度 if(root==null){ return 0; } int left=maxDepth(root.left);原创 2022-05-23 18:02:53 · 164 阅读 · 0 评论 -
【浅刷Java数据结构】LeetCode 118.杨辉三角(运用顺序表)
题目链接: LeetCode 118.杨辉三角.题目解析:class Solution { public List<List<Integer>> generate(int numRows) { //由题目的返回值,先来实例化一个泛型类的List对象,该泛型类的参数类型为List<Integer>,该对象的模型大致与二维数组相似 List<List<Integer>> ret = n原创 2022-04-27 10:48:15 · 1409 阅读 · 3 评论