数据结构
圈圈圆圆圈圈点点
这个作者很懒,什么都没留下…
展开
-
[剑指offer]23.二叉搜索树的后序遍历序列
23. 二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 解题思路 根据二叉排序树和后序遍历的性质得知,后序遍历序列最后一个元素为根节点,根据根节点值可以将遍历序列分为大于根节点的部分 big 和小于根节点的部分 small 。 满足为二叉搜索树的后序遍历序列要满足: 根...原创 2020-03-12 01:28:11 · 86 阅读 · 0 评论 -
[剑指offer]22.从上往下打印二叉树
22. 从上往下打印二叉树 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 解题思路 即二叉树的层次遍历,借用队列实现 代码实现 import java.util.ArrayList; /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; ...原创 2020-03-11 00:58:49 · 99 阅读 · 0 评论 -
[剑指offer]18.二叉树的镜像
18. 二叉树的镜像 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 二叉树的镜像定义: 解题思路 root 为空时,返回 root不为空时,左右子树交互,并对左右子树执行镜像操纵 代码实现 public void Mirror(TreeNode root) { if (root == null){ return; } ...原创 2020-03-07 00:22:14 · 80 阅读 · 0 评论 -
[剑指offer]17.树的子结构
二叉树的镜像 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 解题思路 首先了解子结构与子树的不同 子树是原树T中以某一节点为根节点的整个子树结构,子结构为树T中某一部分的结构,不一定是整个子树结构 思路:遍历树 root1 ,当遇到节点 i 的值与 root2 根节点值相同时,判断以结点 i 为根节点的子树中是否含有子结构 代码实现 pub...原创 2020-03-06 23:37:29 · 97 阅读 · 0 评论 -
[剑指offer]16.合并两个排序的链表
合并两个排序的链表 题目 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解题思路 有 list1 和 list2 ,遍历两个链表,将 list2 中节点非递减的插入 list1 中。 代码实现 public ListNode Merge(ListNode list1,ListNode list2) { if (list1 == nul...原创 2020-03-06 14:44:05 · 103 阅读 · 0 评论 -
[剑指offer]15.反转链表
14. 反转链表 题目 输入一个链表,反转链表后,输出新链表的表头。 解题思路 假设当前指针 i 指向链表中第 i 个结点;指针 j 指向第 i-1 个结点,0~i-1为已反转部分;指针 k 指向 i+1 个结点,i+1 至链表尾为尚未反转的节点。 将 i 节点next 指向 j,将三个指针向前移一位。 重复以上操作直至 i 指向 NULL。 代码实现 public ListNode Revers...原创 2020-03-05 00:55:23 · 83 阅读 · 0 评论 -
[剑指offer]14.链表中倒数第k个结点
14. 链表中倒数第k个结点 题目 输入一个链表,输出该链表中倒数第k个结点。 解题思路 设置快慢指针 fast 和 slow ,fast 先前移k个单位后,slow 和 fast 同时向前移至 fast 到链表结尾,fast 和 slow 之间差k-1个结点,slow 所指位置即为倒数第k个结点。 代码实现 public ListNode FindKthToTail(ListNode head,...原创 2020-03-04 18:43:53 · 158 阅读 · 0 评论