作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在做一项关于从前序和中序遍历(每个节点中的一个字符)构建二叉树的作业,我正在努力思考如何构建实际的树。
以下是我关于如何实现这一点的思考过程:
我已经完成了第 1-4 步,但我不太确定如何正确构建我的树,并且想知道是否有人有任何指示。谢谢。
最佳答案
在构建新树之前进行递归。因此,您的列表将如下所示:
非递归部分总体上可以在 O(n) 内完成,并且每个递归级别对它们求和也是每个 O(n)。因此,总运行时间取决于递归级别的数量。如果你有一个近似平衡的树,深度是 O(log n),因此我们得到 O(n · log n)。由于唯一必然较慢的部分是在中序数组中搜索根节点,我想如果我们对树有更多了解,我们可以进一步优化它。
在最坏的情况下,我们对树中的每个节点都有一个递归级别,复杂度为 O(n·n)。
示例:预购 ABCDEF、中购 FEDCBA、树:
+---+
| A |
++--+
|
+---+ |
| B +<--+
++--+
|
+---+ |
| C +<--+
++--+
|
+---+ |
| D +<--+
++--+
|
+---+ |
| E +<--+
++--+
|
+---+ |
| F +<--+
+---+
关于java - 如何从前序和中序遍历构建二叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5213069/
我是一名优秀的程序员,十分优秀!