【每日上机】二叉树遍历
二叉树遍历
题目描述
编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。
例如如下的先序遍历字符串:
ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。
输⼊描述:
示例1
输入
abc##de#g##f###
输出
c b e g d f a
using namespace std;
string str;
int i;
struct TreeNode
{
char val;
struct TreeNode *lchild, *rchild;
TreeNode(char c) :val(c), lchild(NULL), rchild(NULL) {}
};
TreeNode* createTree() {
char c = str[i++];
if (c == '#') return NULL;
TreeNode *root = new TreeNode(c);
root->lchild = createTree();
root->rchild = createTree();
return root;
}
void inOrderTraversal(TreeNode* root) {
if (!root) return;
inOrderTraversal(root->lchild);
cout << root->val << " ";
inOrderTraversal(root->rchild);
}
int main() {
while (cin >> str) {
i = 0;
TreeNode *root = createTree();
inOrderTraversal(root);
cout << endl;
}
return 0;
}
抓码计算机考研qq群 |
|
总群 |
625590924 |
调剂群 |
951508829 |
广大 | 1143982604 |
暨大 | 1071137230 |
广工 | 1093732052 |
华工 | 428389734 |
深大 | 729770764 |
浙大 | 978938582 |
厦大 | 1125268501 |
中大 | 921801084 |
南航 | 281118241 |
华农 | 515681663 |
重邮 | 736197896 |
北邮 | 1126650806 |
南邮 | 1109929146 |
广外 | 976231252 |
东北大学 | 1128523098 |
华南师大 | 476784448 |
南昌大学 | 923249141 |
给个“在看”支持一下我