曾经沧海难为水,除却巫山不是云。|

Joey-Wang

园龄:4年3个月粉丝:17关注:0

9.2 二叉树的遍历

9.2 二叉树的遍历

http://codeup.hustoj.com/contest.php?cid=100000611

D 二叉树遍历

image-20200825230447016

题目解析

⚠️这道题之所以能用先序遍历就能构造树,是因为把空结点用#表示出来了

❗️仔细观察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 中国大陆许可协议进行许可。

posted @   Joey-Wang  阅读(56)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开