二叉树的重构

 我们的问题是:

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

我们知道,二叉树的先序遍历遍历的第一个点一定是根节点,所以根节点一定是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节点的右子树为:

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

学习视频链接

posted @ 2019-08-17 15:34  小仙女本仙  阅读(767)  评论(1编辑  收藏  举报