标签:表头 中序遍历 递归 str git https hub 一个栈 特性
题目描述——从尾到头打印链表
输入一个链表,从尾到头打印链表每个节点的值。
输入描述: 输入为链表的表头
输出描述: 输出为需要打印的“新链表”的表头
首先我们想到的就是反转链表了,如果把链表反转了,然后再返回头,这样再次遍历的时候就相当于从尾到头打印了。
但是修改输入数据真的可行么?
剑指Offer中为我们在面试中提出了如下小提示
在面试时候,如果我们打算修改输入的数据,最好先问问面试官是不是允许修改
通常打印只是一个只读操作,我们肯定不希望输入时候修改链表的内容
单链表的遍历只能从前往后,但是需要从尾往头输出,这不是典型的"先进后出"么,那么我们可以用栈模拟输出
每经过一个结点的时候,把该结点放到一个栈中。当遍历完整个链表后,再从栈顶开始逐个输出结点的值,此时输出的结点的顺序已经反转过来了。
递归在本质上就是一个栈结构,于是很自然地想到用递归来实现。要实现反过来输出链表,每访问到一个结点的时候,先递归输出它后面的结点,再输出该结点自身,这样链表的输出结构就反过来了。
题目描述——重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
输入
前序遍历序列{1,2,4,7,3,5,6,8}
中序遍历序列{4,7,2,1,5,3,8,6}
则重建二叉树并返回。
这道题还是比较简单的,我们知道
递归思想
标签:表头 中序遍历 递归 str git https hub 一个栈 特性
原文地址:https://www.cnblogs.com/cherry-BAIL/p/12903000.html