algorithm - 有两个以上 child 的树的预序和中序

标签 algorithm inorder preorder

我们知道一棵二叉树的给定前序和中序遍历唯一定义了这棵树,那么一般树,即有两个以上 child 的树,前序和中序遍历是否与树结构一一对应.

换句话说,给定一个一般树的元组(前序,中序)对于一般树来说是唯一的还是可以有许多树具有相同的前序和中序遍历元组?

最佳答案

非二叉树(没有左右子树)没有定义中序遍历(访问左子树,访问根,访问右子树)。

显然,预序并没有唯一地定义树。路径 A, B, C 与根 A 和 child BC 的树没有区别>.

但是,前序和后序的组合唯一地定义了你的树(前提是所有节点都是唯一的)。我们可以通过归纳来证明这一点。显然,空字符串唯一地定义了一个空树。

现在,给定一个非空的前序和后序字符串,显然前序字符串中的第一个节点(和后序中的最后一个节点)是根 R 的树。我们现在需要做的就是识别以 R 的 child 为根的子树(以及相应的前序和后序字符串),因为我们可以通过归纳假设找到它们的结构。

RAaaaaaBbbbbb 为前序字符串,aaaaaAbbbbbBR 为后序字符串(ab是任意节点)。显然,AR 的第一个 child 的根,因为它是前序字符串中的第一个后继者。在后序中,该子树以 A 结束(根据后序的定义)。我们截掉那部分,看到 R 的第二个 child 一定是 BR 不再有子节点,因为 B 是后序字符串中的最后一个节点。我们现在有两个较小的子问题:AaaaaaaaaaaABbbbbbbbbbbB。我们可以通过归纳假设来解决这些问题。

关于algorithm - 有两个以上 child 的树的预序和中序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24502848/

相关文章:

algorithm - 使用纬度/经度和公里距离的简单计算?

node.js - 将唯一文件路径转换为唯一整数

java - 根据前序遍历返回二叉树的方法

algorithm - 如何根据前序&中序或后序&中序遍历构建非二叉树?

c++ - 仅给出一个遍历时查找二叉树的其他两个遍历

algorithm - 如何确定地球上的点和线之间的最短路径?

algorithm - 从无序数组构造的两个二叉搜索树的相等性

tree - 有返回值的遍历方法

java - 中序二叉树方法的返回值