• 查找二叉树(tree_a)


    问题 E: 查找二叉树(tree_a)

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 206  解决: 152
    [提交][状态][讨论版][命题人:quanxing][Edit] [TestData] [同步数据]

    题目描述

    已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点,并指出是第几个结点(通过中序遍历访问的 第几个节点)。例:如图二叉树的数据文件的数据格式如下:

    输入

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

    输出

    一个数即查找的结点编号。(中序遍历的顺序为 29 12 8 15 23 5 10)

    样例输入

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

    样例输出

    4

    提示

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<string>
    #include<cstdlib>
    #include<queue>
    #include<vector>
    #define INF 0x3f3f3f3f
    using namespace std;
    struct node{
        int d;
        int left;
        int right;
    }q[101];
    int n,a;
    int ans;
    void inorder(int k)
    {
        if(q[k].left)
            inorder(q[k].left);
        ans++;
        if(q[k].d==a)
        {
            cout<<ans<<endl;
            exit(0);
        }
        if(q[k].right)
            inorder(q[k].right);
    }
    int main()
    {
        cin>>n>>a;
        ans=0;
        for(int i=1;i<=n;i++)
        {
            //5 2 3
            //q[i].d存的是值,而q[i].left和q[i].right存的是编号
            cin>>q[i].d>>q[i].left>>q[i].right;
        }
        inorder(1);
        return 0;
    }
     
    [提交][状态][Edit] [TestData]
  • 相关阅读:
    Automated Telephone Exchange
    Babelfish
    又见回文
    487-3279
    Robot Motion
    99. Recover Binary Search Tree
    98. Validate Binary Search Tree
    97. Interleaving String
    96. Unique Binary Search Trees
    95. Unique Binary Search Trees II
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/10733782.html
Copyright © 2020-2023  润新知