9.2 二叉树的遍历
9.2 二叉树的遍历
http://codeup.hustoj.com/contest.php?cid=100000611
D 二叉树遍历

题目解析
⚠️这道题之所以能用先序遍历就能构造树,是因为把空结点用#表示出来了
❗️仔细观察create函数,这里char c = pre[i++]; 然后根据c的值看要不要给root赋值。
(根据先序遍历的顺序,根结点-》左子树-》右子树)
代码
#include <cstdio>
#include <string>
#include <iostream>
using namespace std;
struct node {
char data;
node *lchild;
node *rchild;
};
int i;
string pre, in;
node* create() {
char c = pre[i++];
if (c == '#') return NULL;
node *root = new node;
root->data = c;
root->lchild = create();
root->rchild = create();
return root;
}
void inOrder(node *root) {
if (root == NULL) return;
inOrder(root->lchild);
in += root->data;
inOrder(root->rchild);
}
int main() {
while (cin >> pre) {
in = "";
i = 0;
inOrder(create());
for (int j = 0; j < in.size(); j++) {
printf("%c ", in[j]);
}
printf("\n");
}
return 0;
}
本文作者:Joey-Wang
本文链接:https://www.cnblogs.com/joey-wang/p/14541181.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步