摘要:
题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。 给定的树节点结构: 二叉树的层次遍历,借助一个队列来实现。 代码如下: 阅读全文
摘要:
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等 阅读全文
摘要:
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 由于在给定的代码中有 import java.util.Stack; 所以就直接用Stack来实现。这里使用了两个栈,一个(stack)用来保存所有push进来的元素,另一个(minStack)用来保存按照push的顺序的 阅读全文
摘要:
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。 我的想法是:每当将一行的所有元素 阅读全文
摘要:
题目:操作给定的二叉树,将其变换为源二叉树的镜像。 给定的树节点结构: 我的想法:从根节点开始,所有节点的左右子树交换。 代码如下: 阅读全文
摘要:
题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 给定的树节点结构: 一开始想在一个方法里面递归,看能不能得出结果,试了几次都失败了。最后只能将判断是否为子树的方法单独提出来,分成两个方法,一个寻找根节点,另一个由这个根节点root1开始,判断root 阅读全文
摘要:
题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 给定的结点结构: 我的想法是:先随便定义一个结点作为开始结点,初始状态:current和head都指向开始结点。比较list1和list2当前的值,较小的那个作为current的next结点,同时向后 阅读全文
摘要:
题目:输入一个链表,反转链表。 给定的结点结构: 我的想法是:用三个结点first,head,second分别来表示前一个结点,当前结点,和后一个结点。三个结点的初始状态:first为null,head为第一个结点,second为第二个结点,三个结点同步移动,每移动一次,便将head的next由原来 阅读全文
摘要:
题目:输入一个链表,输出该链表中倒数第k个结点。 给定的链表节点: 一开始我的想法是,先定义一个长度为k的ListNode数组,然后遍历一遍链表的所有节点,并把每个节点循环存到这个数组里面。“循环存”就是当数组存满的时候,返回到数组第0个位置开始覆盖存储,最后从倒数第一个逆推到倒数第k个。 代码如下 阅读全文
摘要:
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 因为这道题目给定的方法没有返回值,也就是说我们最后要改变原数组,所以我考虑直接在原数组上面操作。 我的想法大致是这样的: 阅读全文