随笔分类 -  剑指offer

摘要:59. 按之字形顺序打印二叉树 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 思路: 层序遍历,如果flag 为true ,则表示 从左至右打印,否则从右至左打印 1 import java 阅读全文
posted @ 2020-03-04 22:36 Lucky小黄人^_^ 阅读(170) 评论(0) 推荐(0)
摘要:142. 环形链表 II & 剑指offer 55. 链表中环的入口结点 题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null 法一: 思路转自:23. 链表中环的入口结点 使用双指针,一个快指针 fast 每次移动两个节点,一个慢指针 slow 每次移动一个节点。因为 阅读全文
posted @ 2020-03-04 21:52 Lucky小黄人^_^ 阅读(330) 评论(0) 推荐(0)
摘要:23.二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思路: 二叉搜索树的根节点大于所有左子树结点,小于所有右子树结点,后序遍历的 顺序是 左 -> 右 -> 根,所以最后 阅读全文
posted @ 2020-02-24 17:31 Lucky小黄人^_^ 阅读(161) 评论(0) 推荐(0)
摘要:22. 从上往下打印二叉树 & 102. 二叉树的层序遍历 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路: 层序遍历二叉树即可 1 import java.util.ArrayList; 2 import java.util.Queue; 3 import java.uti 阅读全文
posted @ 2020-02-24 16:31 Lucky小黄人^_^ 阅读(128) 评论(0) 推荐(0)
摘要:21. 栈的压入、弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出 阅读全文
posted @ 2020-02-24 16:08 Lucky小黄人^_^ 阅读(125) 评论(0) 推荐(0)
摘要:4. 重建二叉树 & 剑指 Offer 07. 重建二叉树 & 105. 从前序与中序遍历序列构造二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4 阅读全文
posted @ 2020-02-24 15:33 Lucky小黄人^_^ 阅读(126) 评论(0) 推荐(0)
摘要:14. 链表中倒数第 k 个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点 法一:快慢指针 快指针先走 k 步,等快指针到达尾部时,慢指针所指结点即是倒数第 k 个结点 1 public class Solution { 2 public ListNode FindKthToTail(Li 阅读全文
posted @ 2020-02-23 22:00 Lucky小黄人^_^ 阅读(167) 评论(0) 推荐(0)
摘要:18. 二叉树的镜像 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 法一:使用递归 如果结点为空,直接返回,否则递归交换每个结 阅读全文
posted @ 2020-02-23 21:18 Lucky小黄人^_^ 阅读(148) 评论(0) 推荐(0)
摘要:36. 两个链表的第一个公共结点 题目描述 输入两个链表,找出它们的第一个公共结点。 法一:双指针法 ,复杂度O(2n) 两个指针同时遍历两个链表,每个指针遍历完当前链表继续遍历另一链表,当两个指针相等或者某个指针为空时退出循环 定义两个指针, 第一轮让两个到达末尾的节点指向另一个链表的头部, 最后 阅读全文
posted @ 2020-02-22 22:40 Lucky小黄人^_^ 阅读(201) 评论(0) 推荐(0)
摘要:56. 删除有序链表中的重复结点 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 分析 借助辅助头结点,可避免单独讨论头结点的情况。设置两个结点 pre 和 cur 阅读全文
posted @ 2020-02-22 20:50 Lucky小黄人^_^ 阅读(199) 评论(0) 推荐(0)
摘要:39. 是否为平衡二叉树 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树任意结点的左右子树高度差不大于1就是平衡二叉树。 C++解法 1 class Solution { 2 public: 3 bool flag = true; // 记录是否为平衡二叉树,不是则为false 4 bool 阅读全文
posted @ 2020-02-20 10:28 Lucky小黄人^_^ 阅读(125) 评论(0) 推荐(0)
摘要:38. 二叉树的深度 题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; 阅读全文
posted @ 2020-02-19 22:54 Lucky小黄人^_^ 阅读(168) 评论(0) 推荐(0)
摘要:16. 合并两个有序链表 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 /*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NU 阅读全文
posted @ 2020-02-19 21:56 Lucky小黄人^_^ 阅读(141) 评论(0) 推荐(0)
摘要:15.链表反转 题目描述 输入一个链表,反转链表后,输出新链表的表头。 PHead,pre, next分别指向当前结点, 前一个结点, 后一个结点,每次迭代先更新当前结点的指针,记录下个结点的指向,转向,指向前一个结点的指针后移 1 class Solution { 2 public: 3 List 阅读全文
posted @ 2020-02-19 21:18 Lucky小黄人^_^ 阅读(170) 评论(0) 推荐(0)
摘要:58.对称的二叉树 题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNode 阅读全文
posted @ 2020-02-19 19:24 Lucky小黄人^_^ 阅读(110) 评论(0) 推荐(0)
摘要:62. 二叉搜索树的第 k 个结点 & 230. 二叉搜索树中第K小的元素 题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 法一:中序遍历递归写法 1 class Solution { 2 3 public 阅读全文
posted @ 2020-02-19 18:47 Lucky小黄人^_^ 阅读(149) 评论(0) 推荐(0)