本人刚接触算法不久,对于树的遍历了解不够透彻
问题:
已知一个二叉树的 中序序列为 CBDAEFI 先序序列为 ABCDEFI ,求二叉树的高度,该题给出的答案是4,我自己算出来3,不知道哪里算错了
我自己能推导的思路:
1、根节点是A
2、左子树为CBD,右子树为EFI
3、左子树再分解成:C为左子树的节点,B为C的左节点,D为C的右节点
4、右子树再分解成:E为右子树的节点,F为E的左节点,I为E的右节点
总共就三层,不知道哪里出错
本人刚接触算法不久,对于树的遍历了解不够透彻
问题:
已知一个二叉树的 中序序列为 CBDAEFI 先序序列为 ABCDEFI ,求二叉树的高度,该题给出的答案是4,我自己算出来3,不知道哪里算错了
我自己能推导的思路:
1、根节点是A
2、左子树为CBD,右子树为EFI
3、左子树再分解成:C为左子树的节点,B为C的左节点,D为C的右节点
4、右子树再分解成:E为右子树的节点,F为E的左节点,I为E的右节点
总共就三层,不知道哪里出错
A
B E
C D F
I
中序遍历是递归左,打印当前节点,递归右
先序遍历是打印当前节点,递归左,递归右
可以再搜索一下文章来加深理解
https://cloud.tencent.com/dev...
1 回答3.1k 阅读✓ 已解决
1 回答2.6k 阅读
2.5k 阅读
1 回答1.1k 阅读
1 回答395 阅读✓ 已解决
815 阅读
1 回答331 阅读✓ 已解决
先序是 根左右
中序是 左根右
所以根据先序,可以通过第一个节点知道根是谁,
再结合中序(已知根),可以把序列分成左右子杼,以此类推。
问题:
已知一个二叉树的 中序序列为 CBDAEFI 先序序列为 ABCDEFI ,求二叉树的高度,该题给出的答案是4,我自己算出来3,不知道哪里算错了
我自己能推导的思路:
左子树为CBD,右子树为EFI
a. 左中为CBD, 左先为BCD,所以左根是 B,左子为C,右子为D
b. 右中为EFI,右先EFI,右根是E, 左子为空,右子为FI
综合就是