美文网首页
L2-011. 玩转二叉树

L2-011. 玩转二叉树

作者: 高思阳 | 来源:发表于2018-10-18 13:45 被阅读8次

    先序遍历首先访问根结点,然后遍历左子树,最后遍历右子树
    中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树
    后序遍历首先遍历左子树,然后遍历右子树,最后访问根结点

    结论:
    (1)先序遍历(第一个为树根)和后序遍历(最后一个为树根)可以确定树根
    (2)中序遍历可以在知道根节点之后,确定左右子树

    因此:无论是先序遍历序列还是后序遍历序列,确定了树根后,都需要中序遍历序列来确定左子树和右子树分别是哪一部分,然后才能够还原一颗二叉树。

    L2-011. 玩转二叉树
    给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。

    输入格式:
    输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。
    输出格式:
    在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。
    输入样例:
    7
    1 2 3 4 5 6 7
    4 1 3 2 6 5 7

    大体题意:
    给你二叉树的中序遍历和前序遍历,然后再将所有非叶结点左右孩子对换,最后层序遍历输出。
    思路:
    分析下样例,思路很明确,先根据中序遍历和前序遍历用链表的方式构造出二叉树,然后再层序遍历输出即可,只不过这里的层序遍历是先右后左的方式。
    构造二叉树用结构体递归做,层序遍历直接bfs即可!

    相关文章

      网友评论

          本文标题:L2-011. 玩转二叉树

          本文链接:https://www.haomeiwen.com/subject/nvnjzftx.html