二叉树

来源:互联网 发布:网络数据保险箱 编辑:程序博客网 时间:2024/06/06 02:52

二叉树:一个二叉树由一个根结点 一个左子树 一个右子树组成。

满二叉树:所有的叶子结点都在同一层中,度数为0,看起来是一个三角形。

完全二叉树:叶子结点只能出现在最后一层或倒数第二层,除去最后一层后的二叉树是一个满二叉树,且最后一层的叶子节点必须是从左到右顺序排列。


前序遍历(深度优先遍历):顺序是 根 左 右 ABDEFGCHIMR

中序遍历:顺序是 左 根 右 DEBGFACMIRH

后序遍历:顺序是 左 右 根 EDGFBMRIHCA

广度优先遍历:从左到右依次遍历每一层的二叉树,层 (左 右)ABCDFHEGIMR


练习1:已知前序遍历和中序遍历求出后序遍历。


分析:

1.前序遍历的第一个字母和后序遍历的最后一个字母是 根节点。

2.中序遍历中在根节点右边的是右子结点以及结点下的子树,在根节点左边的是左子节点以及结点下的子树。

3.在中序遍历中根节点右边的子树(字母)里面如果在前序遍历中的顺序在最前面则为前一个根结点的下一个子树。

3的注释:如在中序遍历中根节点A的右边有CMIRH,在前序遍历中发现C在最前面,则A的右子树为C,以此类推。画出图,写出后序遍历。 

这样我们可以根据前序遍历和中序遍历 得到后序遍历。


练习2:已知中序遍历和后序遍历求出前序遍历。


分析:

1.前序遍历的第一个字母和后序遍历的最后一个字母是 根节点。

2.中序遍历中在根节点右边的是右子结点以及结点下的子树,在根节点左边的是左子节点以及结点下的子树。

3.在中序遍历中根节点右边的子树(字母)里面如果在后序遍历中的顺序在最后面则为前一个根结点的下一个子树。

3的注释:如在中序遍历中根节点A的右边有CMIRH,在后序遍历中发现C在最后面,则A的右子树为C,以此类推。画出图,写出前序遍历。 

这样我们可以根据后序遍历和中序遍历 得到前序遍历。


Java程序的实现 明天补上.



原创粉丝点击