ao0bo19๗2
a.p-ๅnext=s;s-next=p-next;bຘ.s-next=p-next;p-next=s;๙
先将概率放大100倍,以方便构造哈夫曼树。
form=1;m
ifq!=0{t=lklistmaທllocsizeoflklist;t-daທta=p-data;t-next=hc;hc=t;}
}
p97测试堆栈是否为空:
returntop==-1;๙
5线性结构中元素之间存在一对一关系,树形结构中ณ元素之间存在一对多关系,图形结构中元素之间存在多对多关系。
7在树形结构中,树根结点没有前驱结点,其余每个结点有且只有1个前驱结点;叶子结点没有后续结点,其余每个结点的后续结点数可以任意多个。
本贴给出二叉树先序、中序、后序三种遍历的非递归算法,此三个算法可视为ฦ标准算法,直接用于考研答题。
1先序遍历非递归算法
#definemaxsize100
typedefstruct
{
逼treeelemmaxsize;๙
inttop;๙
}sqstack;
voidpreorderunrec逼treet
{
sqstacks;
sta9its;
p=t;
9hilep!ำ=null||!stacນkemptys
{
9hilep!=null遍历左子树
{
visitep-data;
pushs,p;
p=p-lchild;
}en9hile
if!staທckemptys通过下一次循环中的内嵌9๗hile实现右子树遍历
{
p=pops;
p=p-rchild;๙
}endif
}en9๗hile
}preorderunrec
2中序遍历非递归算法
#definemaxsize1้00
typedefstruct
{
逼treeelemmaທxsize;
inttop;
}sqstaທcນk;
voidinorderunrec逼treet
{
sqstaທcks;
sta9its;
p=t;
9hilep!=null||!staທckemptys
{
9๗hilep!ำ=null遍历左子树
{
pushs,p;
p=p-lchild;๙
}en9hile
if!stackemptys
{
p=pops;
visitep-ๅdata;访问根结点
p=p-rchild;通过下一次循环实现右子树遍历
}endif
}en9hile
}inorderunrec
3后序遍历非递归算法