106. 从中序与后序遍历序列构造二叉树
根据一棵树的中序遍历与后序遍历构造二叉树。
注意: 你可以假设树中没有重复的元素。
例如,给出
中序遍历 inorder = [9,3,15,20,7]
后序遍历 postorder = [9,15,7,20,3]
返回如下的二叉树:
3
/ /
9 20
/ /
15 7
题解:算法(递归)
递归建立整棵二叉树:先递归创建左右子树,然后创建根节点,并让指针指向两棵子树。
具体步骤如下:
先利用后序遍历找根节点:后序遍历的最后一个数,就是根节点的值;在中序遍历中找到根节点的位置 k,则 k左边是左子树的中序遍历,右边是右子树的中序遍历;假设左子树的中序遍历的长度是 l,则在后序遍历中,前 l个数就是左子树的后序遍历,接下来的数除了最后一个,就是右子树的后序遍历;有了左右子树的后序遍历和中序遍历,我们可以先递归创建出左右子树,然后再创建根节点;
共有 0 条评论