有一棵树,其结点的值为互不相同的正整数,这棵树用孩子兄弟表示法做存储结构,现输入一个正整数x。若树中存在值为x的结点,则输出该结点第2个孩子的值,若树中不存在值为x的结点,则输出:“no this node”,若树中值为x的结点没有孩子,或只有一个孩子,则输出:“no child of NO.2”。 输入描述 第一行是若干个正整数或“-1”组成的序列,是该树对应的二叉树(将该树转化成的二叉树)的扩展二叉树前序遍历序列,其中的“-1”表示空。第二行,一个正整数,表示x的值。 输出描述 树中值为x的结点第2个孩子的值。若树中不存在值为x的结点,则输出:“no this node”,若树中值为x的结点没有孩子,或只有一个孩子,则输出:“no child of NO.2”用C++
时间: 2023-06-14 07:04:42 浏览: 130
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径
```
#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x): val(x), left(NULL), right(NULL) {}
};
TreeNode* buildTree() {
int val;
cin >> val;
if (val == -1) {
return NULL;
}
TreeNode* root = new TreeNode(val);
root->left = buildTree();
root->right = buildTree();
return root;
}
void findSecondChild(TreeNode* root, int x, int& count) {
if (!root) {
return;
}
if (root->val == x) {
if (!root->left || !root->left->right) {
cout << "no child of NO.2" << endl;
} else {
cout << root->left->right->val << endl;
}
}
findSecondChild(root->left, x, count);
findSecondChild(root->right, x, count);
}
int main() {
TreeNode* root = buildTree();
int x;
cin >> x;
int count = 0;
findSecondChild(root, x, count);
if (count == 0) {
cout << "no this node" << endl;
}
return 0;
}
```
阅读全文