《剑指offer》---从尾到头打印链表 和 重建二叉树
2017-01-29 16:00
197 查看
《剑指offer》—从尾到头打印链表 和 重建二叉树
2017年1月29日记一、面试题5:从尾到头打印链表
题目:输入一个链表的头结点,从尾到头反过来打印每个节点的值。假设面试官要求不能修改链表的结构,我们可以利用栈的后进先出,遍历链表,每经过一个节点时,把当前元素放入栈中。再从栈顶开始逐个输出值。
既然想到了用栈来实现,而递归本质上就是一个栈结构,于是也可以用递归来实现。当访问到一个结点时,先递归输出它后面的结点,再输出该自身结点,这样也可以。
基于递归的代码看似很简洁,但是有个问题,当链表长度非常长的时候,会导致函数调用的层级很深,从而导致函数调用栈溢出。
三、面试题6:重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入的前序遍历序列{1,2,4,7,3,5,6,8},和中序遍历{4,7,2,1,5,3,8,6}。前序遍历的第一个结点1就是二叉树的根节点。扫描中序遍历序列,就能确定根节点的值的位置。根据中序遍历特点,1的前面三个数字就是左子树结点的值,1后面的4个数字就是右子树结点的值。
同样,在前序遍历的序列中,根节点后面的三个数字就是3个左子树结点的值,在后面的数字就是右子树结点的值。这样我们就在前序遍历和中序遍历两个序列中,分别找到了左右子树对应的子序列。
既然我们已经分别找到了左右子树的前序遍历和中序遍历序列,我们就可以递归去分别构建左右子树。
相关文章推荐
- 剑指Offer笔记—— 从尾到头打印链表 重建二叉树
- 剑指offer面试题5-从尾到头打印链表/6-重建二叉树
- 剑指offer 从尾到头打印链表
- 《剑指offer》面试题5:从尾到头打印链表
- 《剑指offer》005-从尾到头打印链表
- 《剑指offer》6.从尾到头打印链表
- 剑指offer 面试题5 从尾到头打印链表(栈实现)
- 《剑指Offer》从尾到头打印链表
- 《剑指offer》刷题笔记(链表):从尾到头打印链表
- 剑指offer:(3)单链表:从尾到头打印链表
- 剑指offer面试题[5]-从尾到头打印链表
- 剑指offer(三)从尾到头打印链表
- 《剑指Offer》读书笔记03:从尾到头打印链表
- 从尾到头打印链表——剑指offer
- 剑指offer--从尾到头打印链表 java实现
- 剑指offer面试题5:从尾到头打印链表
- python 实现剑指offer系列3:从尾到头打印链表
- 《剑指Offer》从尾到头打印链表
- 剑指offer--python --c++--从尾到头打印链表
- 《剑指offer》从尾到头打印链表