摘要:
【题目描述】输入两棵二叉树A和B,判断B是不是A的子结构。【解决方案】根据图示,用递归解决。注意代码的鲁棒性,树的操作很可能会访问不存在的内存,必须做好对null的处理!我的代码示例,仅供参考: 1 public static bool HasSubTree(BinaryTreeNo... 阅读全文
摘要:
【题目描述】输入两个递增排序的链表,合并这两个链表并使新链表中的结点是按照递增排序的。【解决方案】用递归解决,非常简单。我的代码实现,仅供参考: 1 public static ListNode Merge(ListNode listA, ListNode listB) 2 ... 阅读全文
摘要:
【题目描述】定义一个函数,输入一个的头结点,反转该链表并输出反转后的头结点。【解决方案】我的代码实现,仅供参考: 1 public static ListNode ReverseList(ListNode head) 2 { 3 ListNod... 阅读全文
摘要:
【题目描述】输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第一个结点。例如,一个链表有6个结点,从头结点开始他们的值依次是1,2,3,4,5,6。这个链表的都属第三个结点是值为4的结点。【解决方案】方法:设置两个指针p1,p2。p1先走k个结... 阅读全文
摘要:
【题目描述】输入一个整数数组,实现一个函数来调用该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。【解决方案】1. 只完成基本功能的解法,仅适用于初级程序员方法:设置头尾两个指针,满足条件就交换,直到碰头为止。我的代码实现,仅供参考: 1 public ... 阅读全文
摘要:
【题目描述】给定单项链表的头指针和一个结点指针,定义一个函数在O(1)时间删除改结点。【解决方案】要删除结点i,可以先把下一个结点j的内容复制给i,然后把i的指针指向结点j的下一个结点。此时再删除结点j,其效果刚好是把结点i给删除了。考虑情况:1. 要删除的结点不是尾结点的情况;2. 链表只有一个结... 阅读全文
摘要:
【题目描述】输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1,2,3一直到最大的3位数即999。【解决方案】1. 最无脑的做法怎么可能会出这么简单的问题,必然要考虑的大数问题!我的代码实现,仅供参考: 1 public static void Print0ne... 阅读全文