zoukankan      html  css  js  c++  java
  • 合并两个排序的链表

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

    题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如输入图中链表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的子结构

  • 相关阅读:
    shutil模块详解
    pycharm连接服务器
    python中__name__属性的使用
    ORM学习笔记
    ORM连表操作
    python操作mysql实例
    python登录项目
    pycharm建立第一个django工程-----windows中
    打印顺序
    shell脚本
  • 原文地址:https://www.cnblogs.com/zhibei/p/9209116.html
Copyright © 2011-2022 走看看