只有前序遍历为什么不能还原二叉树? 假定前序遍历为 A B C A是根节点不用说 因为BC 大于 A ,所以 BC是 A 的右边, 左节点为空 结果不就出来了吗? —–A 空——–B ————— C 为啥网上都说 只有前序遍历不能确定一颗二叉树? 因为前序遍历缺少子节点是否为空的信息。 一(遍历搞的很通透的可以直接跳到第二大点看) 我逆推这个二叉树的过程是按照我前序遍历写法来逆推的,所以①②③④步骤是根据前序遍历写法推出来的。 我的写法就是 以前序遍历为例 把整个的二叉树分为根左右,先写出根。把左子二叉树里面分为根左右,再写出根。重复直到最下层节点,补全最底层根左右,再由下层至上依次补全根左右。 把右子二叉树里面分为根左右,再写出根。重复直到最下层节点,补全最底层根左右,再由下层至上依次补全根左右。 序号即为顺序。
中序遍历和后序遍历请自行根据左根右和左右根这个口诀来推。 根据前序遍历ABC。 假设a右边为空。
假设a的左边为空
扩展:只有前序遍历,中序遍历,后序遍历均无法还原二叉树。 所所以为什么前序遍历和后序遍历组合无法还原整个二叉树 而 前序遍历加中序遍历组合 或 后序遍历加中序遍历组合 可以还原二叉树。 解释如下: 第一种解释:因为前序遍历是根左右,后序遍历是左右根。遍历内,根不能是空的,左右可以是空的,而左如果是空的,节点表示的就是右,这样就存在到底表示的是左还是右的不确定性。 第二种解释:无法还原二叉树的组合内,均缺少你问题里画出来的“空”。 因为只有中序遍历结构是左根右,左和右被根分开,这样结合前序遍历或后序遍历可以判断二叉树每一个分枝左右是否为空。 在三种遍历过程中,左右子树为空的情况被自动省略了,所以我们只有准确推断出空在哪里,才能还原二叉树。 如果还不懂,可以留言哈。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/34522.html