查找二叉树题解

来源:互联网 发布:msqrd.软件 编辑:程序博客网 时间:2024/06/06 10:02


查找二叉树题解

题目描述           

1601:查找二叉树

时间限制:1 Sec  内存限制:128 MB
提交:16  解决:10
[提交][状态][讨论版]

题目描述

已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点,并指出是第几个结点。

输入

第一行n为二叉树的结点个数,n<=100;第二行x表示要查找的结点的值;一下第一列数据是各结点的值,第二列数据是左儿子结点的编号,第三列数据是右儿子结点编号。

输出

输出一个数即查找的结点编号。

样例输入

7
15
5 2 3
12 4 5
10 0 0
29 0 0
15 6 7
8 0 0
23 0 0

样例输出

4

提示

来源

信息学奥赛一本通

[提交][状态][讨论版]

한국어 中文 فارسی English ไทย
Anything about the Problems, Please Contact Admin:admin

 

 

 

题目解析           

 二叉树最为重要的当然是建树啦,会建树就会在二叉树颇有建树。那么怎样建树呢?此处推荐结构体http://blog.csdn.net/xiaoyali/article/details/4393486,观者可自行学习。


文本框: 4此处代码实现:

#include<cstdio>

#include<cmath>

using namespace std;

int num=0,temp;

struct node{

     intdata,shu;

     intleftchild,rightchild;

}node[101];//结构体

void zhongxu(int k){

     if(k!=0){

     zhongxu(node[k].leftchild);

     num++;

     node[k].shu=num;

     zhongxu(node[k].rightchild);

     }//中序遍历

     return;

}

int main()

{

     intm,n,i;

     scanf("%d%d",&n,&m);

     for(i=1;i<=n;i++){

          scanf("%d%d%d",&node[i].data,&node[i].leftchild,&node[i].rightchild);/直接建树

          if(node[i].data==m)temp=i;//记录

     }

     zhongxu(1);//中序遍历

     printf("%d",node[temp].shu);

}

1 0
原创粉丝点击