当前位置:首页 » 操作系统 » 叉子验算法

叉子验算法

发布时间: 2022-07-24 17:53:32

1. 为什么用叉子让硬币浮起来

为什么用叉子让硬币浮起来?是一个物理实验吗?没有说用叉子把插把硬币插住的话,她就能浮起来了

2. 两根叉子交叉中间放一根火柴立在手上可以稳稳的站着,是什么物理实验

两个叉子的重心在火柴两边

3. 二叉树相关算法的实验验证 [ 实验目的] 验证二叉树的链接存储结构及其上的基本操作。(c++)

浅谈数据结构-二叉树

二叉树是树的特殊一种,具有如下特点:1、每个结点最多有两颗子树,结点的度最大为2。2、左子树和右子树是有顺序的,次序不能颠倒。3、即使某结点只有一个子树,也要区分左右子树。

一、特殊的二叉树及特点

1、斜树

所有的结点都只有左子树(左斜树),或者只有右子树(右斜树)。这就是斜树,应用较少

基本思想:先后序遍历左子树,然后再后序遍历右子树,最后再访问根结点即左—右—根。

图中后序遍历结果是:4,8,7,5,2,6,3,1。

后序递归遍历代码实现,如下所示。

  • //后序递归遍历void PostOrderTraverse(BiTree t)

  • { if(t != NULL)

  • {

  • PostOrderTraverse(t->lchild);

  • PostOrderTraverse(t->rchild);

  • printf("%c ", t->data);

  • }

  • }

  • 后序遍历的非递归实现是三种遍历方式中最难的一种。因为在后序遍历中,要保证左孩子和右孩子都已被访问,并且左孩子在右孩子之前访问才能访问根结点,这就为流程控制带来了难题。下面介绍一种思路。

    要保证根结点在左孩子和右孩子访问之后才能访问,因此对于任一结点p,先将其入栈。若p不存在左孩子和右孩子,则可以直接访问它,或者p存在左孩子或右孩子,但是其左孩子和右孩子都已经被访问过了,则同样可以直接访问该结点。若非上述两种情况,则将p的右孩子和左孩子依次入栈,这样就保证了每次取栈顶元素的时候,左孩子在右孩子之前别访问,左孩子和右孩子都在根结点前面被访问。

  • //后序非递归遍历二叉树int NoPostOrderTraverse(BiTree t)

  • {

  • SqStack s;

  • InitStack(&s);


  • BiTree cur; //当前结点

  • BiTree pre = NULL; //前一次访问的结点 BiTree tmp;

  • if(t == NULL)

  • {

  • fprintf(stderr, "the tree is null. "); return ERROR;

  • }


  • Push(&s, t); while(IsEmpty(&s) != 1)

  • {

  • GetTop(&s, &cur);// if((cur->lchild == NULL && cur->rchild == NULL) || (pre != NULL && (pre == cur->lchild || pre == cur->rchild)))

  • {

  • printf("%c ", cur->data); //如果当前结点没有孩子结点或者孩子结点都已被访问过

  • Pop(&s, &tmp);

  • pre = cur;

  • } else

  • { if(cur->rchild != NULL)

  • {

  • Push(&s, cur->rchild);

  • } if(cur->lchild != NULL)

  • {

  • Push(&s, cur->lchild);

  • }

  • }

  • } return OK;

  • }

  • 五、二叉树的建立

    其实而二叉树的建立就是二叉树的遍历,只不过将输入内容改为建立结点而已,比如,利用前序遍历建立二叉树

  • //创建树//按先后次序输入二叉树中结点的值(一个字符),#表示空树//构造二叉链表表示的二叉树BiTree CreateTree(BiTree t)

  • { char ch;

  • scanf("%c", &ch);

  • if(ch == '#')

  • {

  • t = NULL;

  • } else

  • {

  • t = (BitNode *)malloc(sizeof(BitNode)); if(t == NULL)

  • {

  • fprintf(stderr, "malloc() error in CreateTree. "); return;

  • }


  • t->data = ch; //生成根结点

  • t->lchild = CreateTree(t->lchild); //构造左子树

  • t->rchild = CreateTree(t->rchild); //构造右子树 } return t;

  • }

  • 4. 压力和压强实验中小叉子有什么用

    叉子的尖端做得很尖,这样设计的目的是在压力一定时,通过减小受力面积来增大压强.
    故选B.

    5. 有人想买几套餐具,到餐具店看了后, 发现自己带的钱可以买21把叉子和21把勺子……这道题我的算法错误在哪

    因为发现自己带的钱可以买21把叉子和(注意这里是个“和”)21把勺子,或者28把小刀
    所以以小刀为标准单位,一把叉子+一把勺子=4/3刀,一把刀=1刀,总钱数=28刀
    (叉子+勺子+刀)套数= 28刀/(4/3刀+1刀)=12套

    6. 有经验的渔民在叉鱼时,要把叉子对着所看到鱼的______叉去,才能叉到,此时看到的鱼是______象(虚或实)

    从鱼身上反射出的光线由水中进入空气时,在水面上发生折射,折射角大于入射角,折射光线进入人眼,人眼会逆着折射光线的方向看去,就会觉得鱼变浅了,眼睛看到的是鱼的虚像,在鱼的上方,所以叉鱼时要瞄准像的下方;如下图所示:



    故答案为:下方;虚.

    7. : 中文 9510:49上期回顾有一个人去商店买餐具,他身上带的钱可以买21个叉子

    因为发现自己带的钱可以买21把叉子和(注意这里是个“和”)21把勺子,或者28把小刀
    所以以小刀为标准单位,一把叉子+一把勺子=4/3刀,一把刀=1刀,总钱数=28刀
    (叉子+勺子+刀)套数= 28刀/(4/3刀+1刀)=12套

    热点内容
    android64位开发环境 发布:2025-01-20 01:58:01 浏览:261
    阿里云服务器能搭美国站点 发布:2025-01-20 01:49:34 浏览:276
    安卓手机壁纸如何更换成动态壁纸 发布:2025-01-20 01:40:27 浏览:705
    安卓微信签名在哪里修改 发布:2025-01-20 01:25:31 浏览:109
    安卓电脑管家怎么恢复出厂设置 发布:2025-01-20 01:24:06 浏览:313
    qt编译sqlite库 发布:2025-01-20 01:22:30 浏览:525
    360摄像头存储设置 发布:2025-01-20 01:16:01 浏览:538
    js防缓存 发布:2025-01-20 01:15:47 浏览:495
    编程生日卡 发布:2025-01-20 01:15:14 浏览:206
    android备忘录源码 发布:2025-01-20 01:06:32 浏览:455