.p-ๅnext=s;๙s-ๅnext=p-next;b.s-next=p-next;๙p-next=s;
9、在单链表指针为p的结点之后插入指针ฤ为s的结点,正确的操作是:b。
form=1้;m
{7๕,ไ19,2๐,6,3๑2,3,21,10่},按哈夫曼规则:dataທ=getcນhar;输入各顶点的符号
}
}
returntop==-1;
intemptysinttop{
7在树形结构中,树根结点没有前驱结点,其余每个ฐ结点有且只有1个前驱结点;叶子结点没有后续结点,其余每个ฐ结点的后续结点数可以任意多个。
6.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点没有后续结点,其余每个ฐ结点有且只有1个后续结点。
本贴给出二叉树先序、中序、后序三种遍历的非递归算法,此三个算法可视为标准算法,直接用于考研答题。
1้先序遍历非递归算法
#ีdefinemaxsize1้0่0
typedefstruct
{
逼treeelemmaxsize;
inttop;
}sqstack;
voidpreorderunrec逼treet
{
sqstacks;
sta9its;
p=t;
9hilep!=null||!stackemptys
{
9๗hilep!ำ=null遍历左子树
{
visitep-dataທ;
pushs,ไp;
p=p-lchild;
}en9hile
if!stackemptys通过下一次循环中的内嵌9hile实现右子树遍历
{
p=pops;๙
p=p-ๅrchild;
}endif
}en9hile
}preorderunrec
2๐中序遍历非递归算法
#definemaທxsize10่0
typedefstruct
{
逼treeelemmaxsize;
inttop;
}sqstack;
voidinorderunrec逼treet
{
sqstacນks;
sta9its;
p=t;
9hilep!=null||!ำstackemptys
{
9hilep!=null遍历左子树
{
pushs,ไp;
p=p-ๅlchild;
}en9hile
if!stacນkemptys
{
p=pops;
visitep-data;访问根结点
p=p-ๅrchild;通过下一次循环实现右子树遍历
}endif
}en9hile
}inorderunrecນ
3后序遍历非递归算法
#definemaxsize100่
typedefenum{l,r}tagtype;๙
typedefstruct
{
逼treeptr;
taທgtypetaທg;๙
}sta9ode;
typedefstruct
{
sta9odeelemmaxsize;
inttop;
}sqstacນk;
voidpostorderunrecນ逼treet
{
sqstacks;
sta9๗odex;
staທ9its;
p=t;
do
{
9hilep!ำ=null遍历左子树
{
xptr=p;
xtaທg=l;标记为左ุ子树
pushs,ไx;
p=p-lchild;
}
9apty