合并两个排序的链表

题目:合并两个排序的链表

题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如输入图中链表1和链表2,则合并之后的升序链表如链表3所示。

 

思路解析:
首先分析合并两个链表的过程。我们的分析从合并两个链表的头节点开始。链表1的头结点的值小于链表2的头结点的值,因此链表1的头节点将是合并后链表的头结点,如下图所示:

 

注:(a)链表1的头结点的值小于链表2的头结点的值,因此链表1的头结点是合并后链表的头结点。(b)在剩余的结点中,链表2的头结点的值小于链表1的头结点的值,因此链表2的头结点是剩余结点的头结点,把这个结点和之前已经合并好的链表的尾结点链接起来。

题目:树的子结构

输入两颗二叉树A和B,判断B是不是A的子结构。

解题思路:例如图中的两颗二叉树,由于A中有一部分子树的结构和B是一样的,因此B是A的子结构

 

首先我们试着在树A中找到值为8(树B的根节点的值)的结点。从树A的根节点开始遍历,我们发现他的根结点就是8.接着我们就去判断树A的根结点下面的子树是不是含有树B一样的结构(如图所示)。在树A中,根节点的左子结点的值是8,而树B的根结点的左子结点是9,对应的两个结点不同

 

因此我们仍然需要遍历树A,接着查找值为8的结点。我们在树的第二层中找到了一个值为8的结点,然后进行第二步的判断,即判断这个结点下面的子树是否含有和树B一样结构的子树。于是我们遍历这个结点下面的子树,先后得到两个子节点9和2,这和树B的结构完全相同。此时我们在树A中找到了一个和树B的结构一样的子树,因此树B是树A的子结构

原文地址:https://www.cnblogs.com/zhibei/p/9209116.html