给该前缀。中缀和后缀表达式树对应的。
2.Give a mininum cost spanning tree corresponding to the figure (using prim or Kruskal ).
给最小代价树对应图 (使用图元或克鲁斯)
3.Please design an algorithm to count how many nodes the binary tree have.
请设计一个算法来计算二进制树有多少个节点。
4.Write an algorithm that traveses a linked list and destroy all nodes whose value is negative.
写一个算法,traveses链表并摧毁它的值是负的所有节点
如果有问题还请指出,仅供参考。最后一题代码在电脑上测试过,还有简便算法大家共享。
英文翻译:
1、遍历一课树,给出前序,中序,后序。
2、遍历最小生成树上的数字,用prim和kruskal算法
3、设计一个算法,计算二叉树上有多少个节点
4、写一个算法Traveses()链表,删除所有节点的值是负的
第一题:看书上P139页例题 图6.11 二叉树三种遍历序列
第二题:构造一棵最小生成树,使用prim和kruskal算法。参考P200 图7.26 Prim算法构造最小生成树的过程示意图 和p202页 图7.27 Kruskal算法构造最小生成树的过程示意图 ,会构造示意图就行。前面两题不涉及到代码。
第三题:
基本思想:
若二叉树为空,则结束统计操作,否则:
中序遍历根的左子树;
统计根节点树;
中序遍历根的右子树。
代码如下:
int count = 0 ; //count定义为全局变量
void Count_tree(BTree t)
{
if(t)
{
Count_Tree(t -> lchild);
Count ++;
Count_Tree(t -> rchild);
}
}
具体内容见书上P145页,这里只写了算法一,也可以写算法二。
第四题:
void Travel(Linklist H) //函数名可以自己取
{
Linklist pre , q , p;
pre = H ; //用于记录遍历的当前节点的前一个位置
p = H -> next;
while(p)
{
if(p -> data < 0)
{
q = p;
pre -> next = p -> next; //在链表中去除p,即使前驱指向当前待删除节点的下一个位置
free(q);
p = pre -> next;
}
else
{
pre = pre -> next;
p = p -> next;
}
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容