二叉树 2
二叉树系列 2
最大二叉树
https://leetcode-cn.com/problems/maximum-binary-tree/
1 |
|
从前序与中序遍历序列构造二叉树
https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/
一个节点要做的事就是从两个数组中找到根节点,然后递归地生成左右子树。要正确的生成子树,就要将子树对应的数组正确的传入函数中。
可以利用中序数组根节点的位置推算出左子树长度,从而在前序数组中确定位置。
1 |
|
从中序与后序遍历序列构造二叉树
https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/
和上一题几乎是一样的思想。
1 |
|
根据前序和后序遍历构造二叉树
https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-postorder-traversal/
如何通过前后序位置确定某一棵子树的大小?前序数组的第 2 个位置就是左子树的根节点。
在后序数组中寻找这个元素的位置,它的 index 就指示了左子树的大小(在后序数组中,根节点的值位于它所有子树之后)
1 |
|
为什么还原的二叉树可能不唯一?因为在这一句中:
1 |
|
我们假设了前序数组中根节点的后一个值就是左子树根节点,然而左子树如果为空,这个值实际上是右子树根节点,所以不能确定到底是哪一个。