详细讲解:已知两种遍历方式画出二叉树

例题引入

要求出二叉树,这里要用到整体的思想,先看一道例题

先序遍历:A B D F C E G H

中序遍历:B F D A G E H C

首先要知道的点

        首先要明白每种遍历方式,这里我就直接给你了。

        先序遍历:根左右        中序遍历:左根右        后序遍历:左右根

        要记住也很简单,就是把“根”这个字往右移动一位。

        那么记住这个有什么用呢?

        接下来开始讲解。


例题讲解

        步骤一

        首先要知道,先序遍历一定是从根结点先开始的,就如同上边讲的,根左右。

所以,根节点就是A,先画下来。

                

       此时再看先序遍历的,就不能分清楚后面的一串BDFC....到底是左子树还是右子树。这时候就看中序遍历,找到A点。

        中序遍历是左根右 ,那么根据整体思想,把A的左边看作一个整体,右边也看做一个整体。

那么左子树就是BFD,右子树就是GEHC。

        (先看左子树)但是,谁是左子树的根节点呢?这时候又回到先序遍历,因为先序遍历遍历方式是根左右,又知道BFD是左子树,那么就能够通过先序遍历知道左子树的根节点是谁,看到先序遍历,找到BDF。

        根据根左右,A是根,BDF是左,那么B就是左子树的根(先序遍历左子树开头第一个就是根), 同样的道理,CEGH是右子树,那么C就是右子树的根。画下来。

         步骤二

        那么接下来该如何找剩下的呢?

        接下来首先把A给删了,已经找满了左右子树的根节点就不需要了。

        我们先找B结点的左右子树,那么又是同样的步骤,因为已经知道了B所在的子树只有BDF,那么D、F该怎么分配呢?

        将B视为根节点,先序遍历根左右 ,此时不知道DF究竟在左子树还是在右子树(看作整体)

这时候看中序遍历,左根右,B的左边什么都没有,所以它没有左子树,所以DF一定是右子树上的点。再根据先序遍历根左右,得到D是右子树的根节点。画下来。

        那么B的左右子树找完了,可以把B删了

         接下来又是同样的步骤,找F是D的左子树还是右子树,看中序遍历,左根右,知道F一定是D的左子树。

        那么右边从C开始也是同样的步骤,依次找就行了。

例题答案

        


总结

        总体思想就是确定根后运用整体思想,然后根据各个遍历的特点去找到每个点应该在的位置。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值