首页 > 其他分享 >144-10 感觉有点难

144-10 感觉有点难

时间:2023-10-11 21:57:19浏览次数:446  
标签:10 144 return int Tree 结点 感觉 data Kdata

二叉树使用二叉链表存储,求先序序列中第k个结点的值

首先明确先序遍历是根-左-右,使用递归算法,先左子树,后右子树。

为了防止在找到第k个结点之前就进入右子树的遍历,可以在递归调用时,将左子树的返回值存储在一个变量中,并进行判断。

如果左子树的返回值不等于特定的值(例如-1),则表示已经找到第k个结点,可以直接返回该值,不再进入右子树的遍历。

#include <stdio.h>
#include <stdlib.h>

typedef struct node{
    int data;
    struct node *lchild,*rchild;
}TreeNode,*Tree;

void CreateTree(Tree &T)
{
    int x;
    scanf("%d",&x);
    if(x==-1)
    {
        T=NULL;
        return;    
    }
    else
    {
        T=(TreeNode*)malloc(sizeof(TreeNode));
        T->data=x;
        printf("输入%d的左结点:",x);
        CreateTree(T->lchild);
        printf("输入%d的右结点:",x);
        CreateTree(T->rchild);
    }
}

int count=0;
int Kdata(Tree T,int k)
{
    if(T==NULL)
        return -1;
    count++;
    if(count==k)
        return T->data;
    int data=Kdata(T->lchild,k);
    if(data!=-1)
        return data;
    return Kdata(T->rchild,k);
}

int main()
{
    Tree T;
    CreateTree(T);
    printf("先序序列中第K个结点值为:%d",Kdata(T,5));
    return 0;
}

 

标签:10,144,return,int,Tree,结点,感觉,data,Kdata
From: https://www.cnblogs.com/simpleset/p/17758286.html

相关文章

  • 面试了10家互联网大厂,我总结出这份面试宝典
    前言很多人害怕面试,一想到面试就心里发怵。实际上,在找工作这件事上,雇佣者和求职者是平等的,双方都希望找到合适的对方。如果你能从更深层次上理解面试,并进行大量的模拟练习,距离成为“面霸”就不远了。下面是面试了10家大厂后得出的经验,希望对正在看文章的你有帮助。模拟面试100次以......
  • 2023.10.11 一些好题
    A你有\(m\)个相同的球,球有性能\(c\),你可以测试\(x\),若\(x\gec\),那么球会碎掉,若\(x<c\),那么球不碎。性能的范围\(n\le1e5\)。求最多要测试多少次。首先答案有一个上限是\(\logn\)。所以令\(m\to\min(m,\logn)\)所以我们记状态可以记\(dp_{l,r,k}\)表示当前确......
  • 大二打卡(10.11)
    今天做了什么:英语课,今天对于老师上课的小发问都能回答上来,不知道是不是因为坐的稍微靠后心情没那么紧张,脑子活了,听力最后一部分听的不行,比上回好了一点,但有限弄了半天建民的测试,我现在已经不知道自己搞错哪一步了,tomcat重装,connector也下了重装,web项目建立的也没问题,代码也没保......
  • 20231010NOIP训练赛
    20231010NOIP训练赛时间安排7:50-8:10写T18:10-8:40写T29:40-10:40写T310:40-11:50写T4总结没时间写T5,T4和T3没写对题解T1简单题,用两个桶记录一下,然后再做两遍前缀和T2二分+哈希T3分组背包T4双指针+动态开点的值域线段树T5建图之后发现是内向基环树森林,对于......
  • 144-9
    链式存储的二叉树,交换左右结点位置递归#include<stdio.h>#include<stdlib.h>#defineMaxSize100typedefstructnode{intdata;structnode*lchild,*rchild;}TreeNode,*Tree;voidCreateTree(Tree&T){intx;scanf("%d",&x)......
  • 2023.10.11——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.java的一些特性;明日计划:学习......
  • 10.11(动物园管理员)
    第一版:把每种动物都定义为一个类,漏洞大,每天加一种动物或者动物数量发生变化都会需要对代码进行调整每种动物的喂食函数名也不同packagehomework;publicclasstext{publicstaticvoidmain(Stringargs[]){Feederf=newFeeder("小王");......
  • 2023/10/11 网络的学习
    学习笔记1网络基础1.1 什么是网络网络:计算机网络,电脑和电脑之间通过线缆或其他介质连接起来,并实现相互之间的通信。通信:人与人,人与物,物与物之间通过某种媒介和行为进行沟通。1.2 网络的分类局域网:作用于相对较小区域。例如企业内部网络,校园内部网络等。城域网:作用于城......
  • 231011校内赛
    T1树上的数题解比上一次好一些的第一题不过我还是没做出来一眼树形\(dp\)不过状态设计和转移不是很好列容易想到对于子树枚举,记录\(f_{i,j}\)表示\(i\)的子树空出了\(j\)个点时的方案数对于每一个节点的初始状态都是\(f_{i,0}=n-dep_i\\\f_{i,1}=1\)为......
  • 20231011
    20231011NOIP#18总结时间安排7:50~8:30看题,\(A,C\)一眼切,\(B\)不会一点,\(D\)应该能爆搜不知道拿多少分。8:30~8:40写\(A\)的正解。8:40~9:40写\(C\)的正解。9:40~10:20写\(D\)的爆搜再加点剪枝,打点数据特判希望骗分。10:20~11:50写了\(B\)的爆搜,然后打特殊......