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;
}