(基础问题)如何通过中序遍历和先序遍历的结果推导出二叉树?

发布于 2022-09-12 23:51:11 字数 260 浏览 21 评论 0

本人刚接触算法不久,对于树的遍历了解不够透彻

问题:
已知一个二叉树的 中序序列为 CBDAEFI 先序序列为 ABCDEFI ,求二叉树的高度,该题给出的答案是4,我自己算出来3,不知道哪里算错了

我自己能推导的思路:
1、根节点是A
2、左子树为CBD,右子树为EFI
3、左子树再分解成:C为左子树的节点,B为C的左节点,D为C的右节点
4、右子树再分解成:E为右子树的节点,F为E的左节点,I为E的右节点

总共就三层,不知道哪里出错

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

忆伤 2022-09-19 23:51:11

先序是 根左右
中序是 左根右

所以根据先序,可以通过第一个节点知道根是谁,
再结合中序(已知根),可以把序列分成左右子杼,以此类推。

问题:
已知一个二叉树的 中序序列为 CBDAEFI 先序序列为 ABCDEFI ,求二叉树的高度,该题给出的答案是4,我自己算出来3,不知道哪里算错了

我自己能推导的思路:

  1. 根节点是A
  2. 左子树为CBD,右子树为EFI
    a. 左中为CBD, 左先为BCD,所以左根是 B,左子为C,右子为D
    b. 右中为EFI,右先EFI,右根是E, 左子为空,右子为FI

    1. 继续分解右子FI,中序为FI,先序为FI
    2. 根为F,左子为空,右子为I

    综合就是

        A 
     B      E 
    C D         F
                   I
    
旧话新听 2022-09-19 23:51:11
   A
 B  E
C D  F
      I

中序遍历是递归左,打印当前节点,递归右
先序遍历是打印当前节点,递归左,递归右
可以再搜索一下文章来加深理解
https://cloud.tencent.com/dev...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文