首页 > 其他分享 >14.7.2014年41题真题讲解

14.7.2014年41题真题讲解

时间:2023-04-09 18:01:06浏览次数:45  
标签:14.7 BiTree listpnew 结点 pnew pcur 2014 NULL 题真题

function.h

//
// Created by 93757 on 2023/3/21.
//

#ifndef INC_1_TREE_FUNCTION_H
#define INC_1_TREE_FUNCTION_H
#include <stdio.h>
#include <stdlib.h>

typedef int BiElemType;
typedef struct BiTNode{
    BiElemType weight;   //c就是书籍上的data
    struct BiTNode *lchild;
    struct BiTNode *rchild;
}BiTNode,*BiTree;

//tag结构体是辅助队列使用的
typedef struct tag{
    BiTree p;     //树的某一节点的地址值
    struct tag *pnext;
}tag_t,*ptag_t;
#endif //INC_1_TREE_FUNCTION_H

main.cpp

#include "function.h"

int wpl=0;
//前序遍历,也叫先序遍历,也是深度优先遍历
void PreOrder(BiTree p,int deep)
{
    if(p!=NULL)
    {
        // printf("ele%c--%d\n", p->c,deep);
        if(p->rchild==NULL&&p->lchild==NULL)
        {
            wpl=wpl+p->weight*deep;
        }
        PreOrder(p->lchild,deep+1);  //打印左子树
        PreOrder(p->rchild,deep+1);  //打印右子树
    }
}


int main() {
    BiTree pnew;//用来指向新申请的树结点
    BiTree tree=NULL;//tree是指向树根的,代表树
    char c;
    ptag_t phead=NULL,ptail=NULL,listpnew=NULL,pcur=NULL;
    //abcdefghij
    while(scanf("%c",&c))
    {
        if(c=='\n')
        {
            break;//读取到换行就结束
        }
        //calloc申请的空间大小是两个参数直接相乘,并对空间进行初始化,赋值为0
        pnew= (BiTree)calloc(1,sizeof(BiTNode));
        pnew->weight=c;
        listpnew= (ptag_t)calloc(1,sizeof(tag_t));//给队列结点申请空间
        listpnew->p=pnew;
        //如果是树的第一个结点
        if(NULL==tree)
        {
            tree=pnew;//tree指向树的根结点
            phead=listpnew;//第一个结点即是队列头,也是队列尾
            ptail=listpnew;
            pcur=listpnew;//pcur要指向要进入树的父亲元素
        }else{
            //让元素先入队列
            ptail->pnext=listpnew;
            ptail=listpnew;
            //接下来把b结点放入树中
            if(NULL==pcur->p->lchild)
            {
                pcur->p->lchild=pnew;//pcur->p左孩子为空,就放入左孩子
            }else if(NULL==pcur->p->rchild)
            {
                pcur->p->rchild=pnew;//pcur->p右孩子为空,就放入右孩子
                pcur=pcur->pnext;//当前结点左右孩子都有了,pcur就指向下一个
            }
        }
    }
    printf("---------PreOrder----------\n");   //也叫先序遍历,先打印当前节点,打印左孩子,打印右孩子
    PreOrder(tree,1);
    printf("wpl=%d\n",wpl);
    return 0;
}

 

标签:14.7,BiTree,listpnew,结点,pnew,pcur,2014,NULL,题真题
From: https://www.cnblogs.com/su-1007/p/17300697.html

相关文章

  • Solution Set - APIO2014
    目录A.回文串B.序列分割C.连珠线A回文串给定字符串\(S\)。对\(S\)的所有回文子串,求其长度与出现次数之积的最大值。\(|S|\le300000\)。点击查看代码#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull......
  • [LNOI2014] LCA 树链剖分+离线处理+lca转化
    困困的开始了我的修炼树剖之旅途考虑怎么搞这个lca是说,习惯了倍增求lca,突然冒出这么一个东西还真不会搞那要么能一次性求很多个lca(?),要么把deep[lca(i,z)]这个东西转化......
  • luogu P3308 [SDOI2014]LIS
    题面传送门涨知识了,第一次知道网络流删边不用全图重跑。首先我们先跑一个暴力dp,出\(f_i\)表示以\(i\)结尾的最长上升子序列长度。然后我们将其按照这个dp值分层,相......
  • Walkthrough-KIOPTRIX 2014
    0x01环境靶机地址:https://www.vulnhub.com/entry/kioptrix-2014-5,62/靶机默认网卡有点问题,移除网卡再新增网卡即可环境容易崩溃,崩溃了重启就好0x02过程1.信息收集......
  • [SCOI2014] 方伯伯的OJ 解题报告
    已经不记得平衡树的样子了。Statement给定一个\(1\simn\)的序列,你有如下几个操作:改变一个人的编号将一个人放在序列开头将一个人放在序列结尾查询排名为\(k\)......
  • 洛谷 P5979 [PA2014]Druzyny
    简要题意有\(n\)个人,把他们划分成尽可能多的区间,其中第\(i\)个人要求它所在的区间长度大于等于\(c_i\),小于等于\(d_i\),求最多的区间数量以及如此划分的方案数。数......
  • uoj #37. 【清华集训2014】主旋律
    考虑原先求的是SCC为1的方案数,这很困难!因为并没有能够转移到子问题的路径。不妨考虑容斥,即SCC为1的方案数=所有方案数-SCC不为1的方案数。不妨先集合划分出S......
  • 【洛谷】P5904 [POI2014]HOT-Hotels(长链剖分)
    原题链接题意给出一棵有\(n\)个点的树,求有多少组点\((i,j,k)\)满足\(i,j,k\)两两之间的距离都相等。\((i,j,k)\)与\((i,k,j)\)算作同一组。\(1\len\le10^5\)......
  • 修复SQLServer 2014支持 TLS 1.2
    修复原因:当把.netcore应用程序部署到linux或docker中去的时候,连接sqlserver数据库可能报错如下:Aconnectionwassuccessfullyestablishedwiththeserver,butthena......
  • 【题解】UOJ#37. [清华集训2014]主旋律
    我自己写的代码自己都看不懂。所以芝士一种船新做法,爱来自学弟,lc学长好工作。题意校内OJ的题面过于简洁,人话:给定一个有向的强连通图,问任意删边使得新图仍强连通的方......