1367:查找二叉树(tree_a)

查找二叉树

使用队列配合输入。
将队列中的节点取出并赋上值,并根据输入决定其是否有左/右子树。如果有,则将子树入队。
不断重复以上步骤,构造一棵二叉树。
对构造的二叉树进行中序遍历查找。

#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
typedef struct TreeNode;
struct TreeNode {
    char val;
    TreeNode *left;
    TreeNode *right;
    TreeNode() : val(0), left(nullptr), right(nullptr) {}
};
int cnt,m,ans;
void midT(TreeNode* node){
    if(!node)return;
    midT(node->left);
    cnt++;
    if(node->val==m)ans=cnt;
    midT(node->right);
}
int main(){
    int n,v,l,r;
    queue<TreeNode*> q;
    cin>>n>>m;
    TreeNode* root=new TreeNode();
    q.push(root);
    for(int i=1;i<=n&&!q.empty();i++){
        TreeNode* node=q.front();
        q.pop();
        cin>>v>>l>>r;
        node->val=v;
        if(l){
            node->left=new TreeNode();
            q.push(node->left);
        }
        if(r){
            node->right=new TreeNode();
            q.push(node->right);
        }
    }
    midT(root);
    cout<<ans;
    return 0;
}
posted @ 2021-09-16 20:04  Rekord  阅读(286)  评论(0编辑  收藏  举报