摘要:
题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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. 分析: 这个题的重点是坐标 阅读全文
摘要:
一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与 阅读全文
摘要:
题目描述: 操作给定的二叉树,将其变换为源二叉树的镜像。 分析: 这个题目相对简单,既然是镜像,只要把左右交换就好了。在遍历二叉树的过程中,每遍历一个根结点,交换其左右子结点即可。显然涉及二叉树的遍历应该使用递归,接下来应该考虑的是递归的终止条件,以及程序的鲁棒性:直到遍历的结点左右子结点都为空即止 阅读全文
摘要:
题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构) 分析: 基本思想是分两步: 遍历树A,先找到A中与B的根值相等的结点R; 然后再判断树A中以R为根结点的子树是不是包含和树B一样的结构。 显然这两部过程中都需要遍历二叉树,而二叉树的遍历一般用递归完成。 阅读全文
摘要:
题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 分析: 因为要合并的两个序列是递增有序的,而合并后的序列也要求是单调不减的,所以两个链表的头结点中比较小的那一个就是新的链表的头。这样就确定了新链表的第一个结点,拿出这个结点作为合并链表的头结点 阅读全文