.p-ๅnext=s;๙s-ๅnext=p-next;b.s-next=p-next;๙p-next=s;

9、在单链表指针为p的结点之后插入指针ฤ为s的结点,正确的操作是:b。

form=1้;m

{7๕,ไ19,2๐,6,3๑2,3,21,10่},按哈夫曼规则:dataທ=getcນhar;输入各顶点的符号

}

}

returntop==-1;

intemptysinttop{

7在树形结构中,树根结点没有前驱结点,其余每个ฐ结点有且只有1个前驱结点;叶子结点没有后续结点,其余每个ฐ结点的后续结点数可以任意多个。

6.在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点没有后续结点,其余每个ฐ结点有且只有1个后续结点。

本贴给出二叉树先序、中序、后序三种遍历的非递归算法,此三个算法可视为标准算法,直接用于考研答题。

1้先序遍历非递归算法

#ีdefinemaxsize1้0่0

typedefstruct

{

逼treeelemmaxsize;

inttop;

}sqstack;

voidpreorderunrec逼treet

{

sqstacks;

sta9its;

p=t;

9hilep!=null||!stackemptys

{

9๗hilep!ำ=null遍历左子树

{

visitep-dataທ;

pushs,ไp;

p=p-lchild;

}en9hile

if!stackemptys通过下一次循环中的内嵌9hile实现右子树遍历

{

p=pops;๙

p=p-ๅrchild;

}endif

}en9hile

}preorderunrec

2๐中序遍历非递归算法

#definemaທxsize10่0

typedefstruct

{

逼treeelemmaxsize;

inttop;

}sqstack;

voidinorderunrec逼treet

{

sqstacນks;

sta9its;

p=t;

9hilep!=null||!ำstackemptys

{

9hilep!=๡null遍历左子树

{

pushs,ไp;

p=p-ๅlchild;

}en9hile

if!stacນkemptys

{

p=pops;

visitep-data;访问根结点

p=p-ๅrchild;通过下一次循环实现右子树遍历

}endif

}en9hile

}inorderunrecນ

3后序遍历非递归算法

#definemaxsize100่

typedefenum{l,r}tagtype;๙

typedefstruct

{

逼treeptr;

taທgtypetaທg;๙

}sta9ode;

typedefstruct

{

sta9odeelemmaxsize;

inttop;

}sqstacນk;

voidpostorderunrecນ逼treet

{

sqstacks;

sta9๗odex;

staທ9its;

p=๡t;

do

{

9hilep!ำ=null遍历左子树

{

xptr=p;

xtaທg=l;标记为左ุ子树

pushs,ไx;

p=p-lchild;

}

9apty