设二叉树中所有非叶结点的左、右子树都不为空。试证明对此类二叉树满足:
(1)含有n个叶结点的二叉树中共有2n-1个结点。
(2),其中,n为叶结点个数,1.表示第i个叶结点所在的层次(设根结点所在的层次为1).
二叉树以二叉链表存储,写出对二叉树进行先序遍历的非递归算法。
解题思路:二叉树的先序遍历非递归算法利用栈结构,从二又树的根结点开始,输出结点信息,同时将结点指针入栈,然后顺着左子树,依次将其左子树各个结点值输出,同时结点指针入栈,直到左子树为空;然后让栈顶指针出栈,接着处理右子树。
判断下列叙述的对错,
(1)在一棵二叉树中·假定每个结点只有左子女,没有右子女,对它分别进行前序遍历和后序遍历,则具有和同的遍历结果,
(2)在一棵二叉树中,假定每个结点只有左子女,没有右子女,对它分别进行中序遍历和后序遍历,则具有相同的遍历结果。
(3)在一棵二叉树中,假定每个结点只有左子女,没有右子女,对它分别选行前序遍历和中序遍历,则具有相同的遍历结果。
(4)在一棵二叉树中,假定每个结点只有左子女,没有右子女,对它分别进行前序遍历和按层历,则具有相同的遍历结果。
已知一棵二叉树的先序遍历序列为EBADCFHGIKJ,中序遍历序列为ABCDEFGHIJK。请画出该二叉树。
解题思路:先序遍历序列中第一个结点E必是根结点,找到根结点后再到中序遍历序列中确定左、右子树的结点值,结点E左边的结点序列是左子树的各个结点,结点E右边的结点序列是右子树的各个结点;然后再到先序遍历序列中找左、右子树的根结点,重复上述过程直到得到一棵确定的二叉树。本例所得二叉树如图所示。