B、若p无左子女且有右子女,则其前序下的后继为p的布子女
C、若p既无左子女又无右子女,则其前序下的后继为p的右线索所指结点
D、若p无左子女,从结点p开始,追踪rightChild链,直到rightChild不是线索,则这时rightChild(不为NULL的话)所指结点为其前序下的后继
针对一棵前序线索二叉树:
(1)仿照中序线家二叉树,定义前序线索二叉树的类结构;
(2)编写算法,实现二叉树到前序线索二叉树的转换;
(3)编写算法,在以1为根的子树中求指定结点p的父结点;
(4)编写算法,求以t为根的子树的前序下的第一个结点
(5)编写算法,求以t为根的子树的前序下的最后一个结点;
(6)编写算法,求结点t的前序下的后继结点:
(7)编写算法,求结点t的前序下的前驱结点;
(8)编写算法,实现前序线索二叉树的前序遍历.
试分别以顺序表和单链表作存储结构,各写一个实现线性表的自身(即使用尽可能少的附加空间)逆置的算法,在原表的存储空间内将线性表(a1,a2,…an)逆置为(an,…a2,a1)。
二叉树结点数值采用顺序存储结构,如图所示。
①画出二叉树表示。
②写出前序遍历,中序遍历和后序遍历的结果。
③写出值为c的结点的父结点及其左、右孩子。
④画出把此二叉树还原成森林的图。
二叉树以二叉链表存储,写出对二叉树进行先序遍历的非递归算法。
解题思路:二叉树的先序遍历非递归算法利用栈结构,从二又树的根结点开始,输出结点信息,同时将结点指针入栈,然后顺着左子树,依次将其左子树各个结点值输出,同时结点指针入栈,直到左子树为空;然后让栈顶指针出栈,接着处理右子树。
若二叉树采用二叉链表存储结构,要交换其所有分支结点左、右子树的位置,利用()遍历方法最合适。
A.前序
B.中序
C.后序
D.层次
A、前序线索二叉树
B、中序线索二叉树
C、后序线索二叉树
D、层次序线索二叉树