摘要:
【面试题024】二叉搜索树的后序遍历序列解决树的问题就是分析,怎么把树的结构一点一点变小,变成子树,问题的域一直在变小,然后怎么递归的解决这个子问题,递归这个子问题的返回条件是什么。先找到二叉树的根结点,再基于根结点把整棵树的遍历序列拆分成左子树对应的子序列和右子树对应的子序列,接下来再递归的处理这... 阅读全文
摘要:
【面试题023】从上往下打印二叉树层次遍历二叉树就是队列的应用树是图的一种特殊退化形式,从上到下按层次遍历二叉树,从本质上来说就是广度优先遍历二叉树。PrintTree.cpp:1234567891011121314151617181920212223242526272829303132333435... 阅读全文
摘要:
【面试题022】栈的压入、弹出序列如果所有的数字都压入栈了仍然没有找到下一个弹出的数字,StackPushPop.cpp:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849... 阅读全文
摘要:
【面试题021】包含min函数的栈MinStack.cpp:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include#include"StackWithMin.h"#in... 阅读全文
摘要:
【面试题020】顺时针打印矩阵输入一个矩阵,按照从外到里的顺序打印出每一个数字,如果只有一行,那么就不用第二步了,第二步的前提条件是终止行号大于起始行号。第三步的前提条件是圈内至少要有两行两列,也就是说除了终止行号要大于起始行号外,还要求终止利好大于起始列号;同理第四步的前提条件是要有三行两列,因此... 阅读全文
摘要:
【面试题019】二叉树的镜像这道题很简单就是交换结点,利用递归解解决问题思路清晰,代码简洁;MirrorTree.cpp:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849... 阅读全文
摘要:
【面试题018】树的子结构输入两个二叉树A,B,判断B是不是A的子结构,SubTree.cpp:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555... 阅读全文
摘要:
【面试题017】合并两个排序的链表两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。MergeList.cpp:1234567891011121314151617181920212223242526272829303132333435363738394041424344454... 阅读全文
摘要:
【面试题016】反转链表定义一个函数,输入一个链表的头结点,反转该链表并且输出反转后链表的头结点;我们定义三个指针,分别指向当前遍历到的结点,她的前一个结点,她的后一个结点;RevList.cpp:123456789101112131415161718192021222324252627282930... 阅读全文
摘要:
【面试题015】链表中倒数第k个结点可以用两个指针,当第一个指针指向了第k个时候,第二个指针让他指向链表的第一个元素,然后这两个指针同时向后面移动,当第一个指针移动到末尾的时候,第二个指针指向的就是倒数第K个结点;两个指针的间距保持为k-1;当我们遍历列表的时候发现用一个指针是解决不了问题的,我们可... 阅读全文