1.已知二叉树的中序序列,后序序列,怎么求前序序列
确定树的根。树根是当前树中所有元素在后序遍历中最后出现的元素。
求解树的子树。找出根节点在中序遍历中的位置,根左边的所有元素就是左子树,根右边的所有元素就是右子树。若根节点左边或右边为空,则该方向子树为空;若根节点左边和右边都为空,则根节点已经为叶子节点。
递归求解树。将左子树和右子树分别看成一棵二叉树,重复1、2、3步,直到所有的节点完成定位。
一棵深度为k,且有2^k-1个结点的二叉树,称为满二叉树。这种树的特点是每一层上的结点数都是最大结点数。而在一棵二叉树中,除最后一层外,若其余层都是满的,并且或者最后一层是满的,或者是在右边缺少连续若干结点。
扩展资料:
若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。
除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。
平衡二叉树又被称为AVL树(区别于AVL算法),它是一棵二叉排序树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
参考资料来源:百度百科--二叉树
2.已知二叉树的中序序列和后序序列,怎么求前序序列
一、前序遍历:访问根结点的操作发生在遍历其左右子树之前。
二、中序遍历:访问根结点的操作发生在遍历其左右子树之中(间)。
三、后序遍历:访问根结点的操作发生在遍历其左右子树之后。
例如:后序遍历为DBCEFGHA,中序遍历为EDCBAHFG,求前序遍历
1、看后序遍历DBCEFGHA,A为总根节点
2、寻找中序遍历EDCBAHFG中A位置,则EDCB在A的左枝,HFG在A的右枝;
3、重复前两步,从后序遍历最后一位找,在中序遍历寻找对应点,得出左右分枝。
4、最后得到AECDBHGF,
在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。
二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树T,如果其终端结点数为n_0,度为2的结点数为n_2,则n_0=n_2+1。
一棵深度为k,且有2^k-1个节点的二叉树,称为满二叉树。这种树的特点是每一层上的节点数都是最大节点数。而在一棵二叉树中,除最后一层外,若其余层都是满的,并且最后一层或者是满的,或者是在右边缺少连续若干节点,则此二叉树为完全二叉树。具有n个节点的完全二叉树的深度为log2n+1。深度为k的完全二叉树,至少有2^(k-1)个节点,至多有2^k-1个节点。
3.二叉树先根遍历,中根遍历序列
这里的“先根”也叫做先序,“中”和“后”也一样。
先序遍历是先访问当前节点,然后再遍历左子树,最后是右子树。
中序遍历是先遍历左子树,再访问当前节点,最后是右子树。
后序遍历是先遍历左子树,再遍历右子树,最后访问当前节点。例:
一棵二叉树的先根遍历为ABCDEFG,中根遍历为CBDEAGF,则其后根遍历为:1、先序遍历的第一个当前节点一定是根节点,所以A是根
2、由于中序遍历是先遍历完左子树再访问当前节点,所以可以看出中序序列在A之前的都是A的左子树中的节点,而在A之后是A的右子树的节点。
3、这样就分成了(cbde)a (GF),三个集合。
4、我们分别再看各个集合。cbde集合中最先在先序序列中出现的是B,这说明b在这个集合中应该是第一个出现的。所以右可以再分