zoukankan      html  css  js  c++  java
  • 二叉树的重构

     我们的问题是:

    给出一棵二叉树的先序遍历与中序遍历,如何构建出这棵二叉树呢?

    我们知道,二叉树的先序遍历遍历的第一个点一定是根节点,所以根节点一定是A。

    在中序遍历中,根节点一定是在最中间的,所以中序遍历中A左边的节点都在A的左子树上,右边的节点都在A的右子树上。

    那么我们就衍生出了一个子问题:

    若有一棵二叉树,先序遍历为:B D E H I,中序遍历为:D B H E I,构建出的是什么样的二叉树。二这课构建出来的二叉树就是A节点的左子树。

    显然,A节点左子树的根节点是B节点,而B节点的左节点是D,右子树包括节点H、E 、I,且我们知道右子树的先序遍历与中序遍历。

    接着我们构建B节点的右子树,明显可见根节点为E,E的左节点为H,右节点为I。

    同样的,我们可以构建出A节点的右子树为:

    所以最后构建出来的二叉树就是:

    学习视频链接

  • 相关阅读:
    P1019 单词接龙
    P1219 八皇后
    Find a way
    P1056 排座椅
    P1067 多项式输出
    关于前缀和,A
    洛谷P1223
    洛谷P1803
    洛谷P1208
    常用方法 Excel转换为DataSet
  • 原文地址:https://www.cnblogs.com/zhengchang/p/erchashuchonggou.html
Copyright © 2011-2022 走看看