(基础问题)如何通过中序遍历和先序遍历的结果推导出二叉树?
本人刚接触算法不久,对于树的遍历了解不够透彻
问题:
已知一个二叉树的 中序序列为 CBDAEFI 先序序列为 ABCDEFI ,求二叉树的高度,该题给出的答案是4,我自己算出来3,不知道哪里算错了
我自己能推导的思路:
1、根节点是A
2、左子树为CBD,右子树为EFI
3、左子树再分解成:C为左子树的节点,B为C的左节点,D为C的右节点
4、右子树再分解成:E为右子树的节点,F为E的左节点,I为E的右节点
总共就三层,不知道哪里出错
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
先序是 根左右
中序是 左根右
所以根据先序,可以通过第一个节点知道根是谁,
再结合中序(已知根),可以把序列分成左右子杼,以此类推。
问题:
已知一个二叉树的 中序序列为 CBDAEFI 先序序列为 ABCDEFI ,求二叉树的高度,该题给出的答案是4,我自己算出来3,不知道哪里算错了
我自己能推导的思路:
左子树为CBD,右子树为EFI
a. 左中为CBD, 左先为BCD,所以左根是 B,左子为C,右子为D
b. 右中为EFI,右先EFI,右根是E, 左子为空,右子为FI
综合就是
中序遍历是递归左,打印当前节点,递归右
先序遍历是打印当前节点,递归左,递归右
可以再搜索一下文章来加深理解
https://cloud.tencent.com/dev...