在平衡二叉树的每个结点中增设一个数据成员Isize,存储以该结点为根的左子树中的结点个数加一的值。编写一个算法,确定树中第k(k≥1)个结点的位置。
以二叉链表作为二叉树的存储结构,编写以下算法:
(1)统计二叉树的叶结点个数。
(2)设计二叉树的双序遍历算法(双序遍历是指对于二叉树的每一个结点来说,先访问这个结点,再按双序遍历它的左子树,然后再一次访问这个结点,接下来按双序遍历它的右子树)。
(3)计算二叉树最大的宽度(二叉树的最大宽度是指二叉树所有层中结点个数的最大值)。
(4)用按层次顺序遍历二叉树的方法,统计树中具有度为1的结点数目。
(5)求任意二叉树中第一条最长的路径长度,并输出此路径上各结点的值。
(6)输出二叉树中从每个叶子结点到根结点的路径。
根结点的数据,LT和RT是括号形式的左子树和右子树。要求空树不打印任何信息,一个结点的树的打印形式是x,而不应是(x,)的形式。
判断下列叙述的对错,
(1)若有一个结点是二叉树中某个子树的中序遍历结果序列的最后一个结点,则它一定是该子树的前序遍历结果序列的最后一个结点。
(2)若有一个结点是二叉树中某个子树的前序遍历结果序列的最后一个结点,则它一定是该子树的中序遍历结果序列的最后一个结点。
(3)若有一个叶子结点是二叉树中某个子树的中序遍历结果序列的最后一个结点,则它一定是该子树的前序遍历结果序列的最后一个结点。
(4)若有一个叶子结点是二叉树中某个子树的前序遍历结果序列的最后一个结点,则它一定是该子树的中序遍历结果序列的最后一个结点。
针对一棵序线索二叉树:
(1)编写算法,实现二叉树到后序线索二叉树的转换;
(2)编写算法,求以t为根的子树的后序下的第一个结点;
(3)编写算法,求以t为根的子树的后序下的最后一个结点;
(4)编写算法,求结点t的后序下的后继结点;
(5)编写算法,求结点t的后序下的前驱结点;
(6)编写算法,实现后序线索二叉树的后序遍历
回指向该结点的指针。要求算法的平均时间复杂度为O(log2n)。二叉搜索树的每个结点中除data、ieftChild、rightChild等数据成员外、增加一个count成员,保存以该结点为根的子树上的结点个数。
前序遍历序列与中序遍历序列相同的二叉树为(1),前序遍历序列与后序遍历序列相同的二叉树为(2)。
A.根结点无左子树的二叉树
B.根结点无右子树的二叉树
C.只有根结点的二叉树或非叶子结点只有左子树的二叉树
D.只有根结点的二叉树或非叶子结点只有右子树的二叉树
设二叉树中所有非叶结点的左、右子树都不为空。试证明对此类二叉树满足:
(1)含有n个叶结点的二叉树中共有2n-1个结点。
(2),其中,n为叶结点个数,1.表示第i个叶结点所在的层次(设根结点所在的层次为1).