首页 > 编程知识 正文

完全二叉树的叶子节点数公式,先序和后序相同的二叉树

时间:2023-05-04 06:44:00 阅读:34468 作者:3528

二叉树的扫描主要有三种:

(1)根;顺扫描;根左右) ) ) ) )。

)中(根)依次扫描;左根右) ) )。

(3)后)路线;依次扫描;左右路线) ) )。

举个例子:

前(根)序扫描)根左右) A B D H E I C F J K G

中(根)序扫描)左根右) : D H B E I A J F K C G

后(根)序扫描(左右根) :危机时) K F G C A

以以后的(根)顺序扫描为例,每次都是遍历树的左侧子树,接着遍历树的右侧子树,最后遍历根节点,直至遍历整个树。

另外,也有一个命题,即无论给定二叉树中的哪个扫描序列,都不能唯一地决定对应的二叉树。 但是,如果知道二叉树中顺扫描序列和任意别的扫描序列,就可以唯一地决定二叉树。

例子1:已知二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是(cedba)。

(1)中序扫描: debac

反向遍历: dabec

可知c是根节点,因为最后的遍历序列的最后一个节点是根节点。

中序遍历序列的根节点位于中间,左侧为左子树,右侧为右子树。 因此,根据中顺扫描序列可知,根节点c只有左部分树,没有右部分树。

(2)中序扫描: deba

反向遍历: dabe

由于后行扫描序列的最后一个节点是根节点,所以可以看出e是c的左部分树的根节点。

中序遍历序列的根节点位于中间,左侧为左子树,右侧为右子树。 因此,根据顺序扫描序列可知根节点e的左子节点为d,右子树为ba。

(3)中序扫描: ba

后遍历: ab

根据以后的遍历序列可知,b是e的右部分树的根节点。 从中顺扫描序列可以看出,a是根节点b的右子节点。

树的结构如下

class Node: def __init__(self,dat,left=None, right=None ) : self.data=dat self.left=left self.left center (3360 if not rear : return cur=node (rear (-1 ) ) center [ :索引] (cur.right=rebuild (rear [索引:-1 ], center [ index 1: ] # rear [ index :-1 ]是倒数第二个数量的returncurdefpre_order(t ) :ift==none:returnprint )

例子2:已知二叉树的前序遍历序列是abdgcefh,中序遍历序列是dgbaechf,它的前序遍历序列是(gdbehfca)。超前遍历: abdgcefh

中序扫描: dgbaechf

由于先行遍历序列的第一个节点是根节点,所以可知a是根节点。

中序遍历序列的根节点位于中间,左侧为左子树,右侧为右子树。 因此,根据中顺扫描序列可知根节点a的左部分树是dgb,右部分树是echf。

(1)

a的左子树:超前遍历: bdg

中序扫描: dgb

可知,由于序列的第一个节点是根节点,所以b是a的左部分树的根节点。

中序遍历序列的根节点位于中间,左侧为左子树,右侧为右子树。 因此,根据中顺扫描序列可知,根节点b的左部分树是dg,没有右部分树。

(2)

b的左子树:超前遍历: dg

中序扫描: dg

从先行遍历序列可知,d是b的左部分树的根节点。

中序遍历序列的根节点位于中间,左侧为左子树,右侧为右子树。 因此,根据依次扫描序列可知根节点d的右子节点是g。

(3)

a的右子树:超前遍历: cefh

中序扫描: echf

从先行遍历序列可以看出,c是a的右部分树的根节点。

从该扫描序列可知,根节点c的左子节点为e,右子树为hf。

(4)

c的右子树:超前遍历: fh

中序扫描: hf

根据遍历序列可以看出f是c的右部分树的根节点。

从该扫描序列可知,根节点f的左子节点为h,没有右子树。

树的结构如下

class Node: def __init__(self,dat,left=None, right=None ) : self.data=dat self.left=left self.left center (3360 if not pre : return cur=node (pre [0] ) ) Inde ) cur.left=rebuild ) pre[13360]cur.left=rebuild ) 13 center [ : index ] (cur.right=rebuild (pre [ index ] center [ index 1: ] (returncurdefpost _ order (t ) : ift==none : return post _ order ) t.left ) post _ order irder

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。