题意
https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/
给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。
https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/
给定一棵树的中序遍历 inorder 与后序遍历 postorder。请构造二叉树并返回其根节点。
https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-postorder-traversal
给定一棵树的前序遍历 preorder 与后序遍历 postorder。请构造二叉树并返回其根节点。
解法
也是经典老题了
记得我之前考PAT的时候的最后一题
当时没有完全调出来
现在能一下子通过还是很开心的
思路其实众所周知了,前序遍历的第一个节点在中序遍历序列中切分为左子树和右子树
递归执行即可
主要在计算左右子树的节点个数的时候有点繁琐 需要仔细一点
单独把左子树的节点个数拿出来计算,下一次递归的时候传入
三类不同的构造,形式相同,做法相似
代码
前序+中序
1 | class Solution { |
中序+后序
1 | class Solution { |
前序+后序
1 | class Solution { |