题解 | #二叉树遍历#

二叉树遍历

https://www.nowcoder.com/practice/4b91205483694f449f94c179883c1fef

#include <bits/stdc++.h>

using namespace std;

//树节点的定义
typedef struct TreeNode {
    char data;
    TreeNode* left;
    TreeNode* right;
}* Tree;

//前序遍历的栈
typedef struct preOrder {
    TreeNode* pos;
    bool leftVisited;
    bool rightVisited;
};

stack<preOrder> preOrderStack;
char str[110] = {0};
int i = 0;

//前序遍历建树
void CreatTree(Tree& t) {
    char data = str[i++];
    if (data != '#') {
        // 申请一个新节点。
        TreeNode* newNode = (TreeNode*) malloc(sizeof(TreeNode));
        t = newNode;
        t->right = NULL;
        t->left = NULL;
        t->data = data;
        //递归插入左子树
        CreatTree(t->left);
        //递归插入右子树
        CreatTree(t->right);
    } else {
        return;
    }
}

void PostVisit(Tree& t) {
    if (t == NULL) {
        return;
    } else {
        PostVisit(t->left);
        printf("%c ", t->data);
        PostVisit(t->right);
    }
}

int main() {
    Tree t = NULL;
    scanf("%s", &str);
    CreatTree(t);
    PostVisit(t);
}

全部评论

相关推荐

07-29 14:46
门头沟学院 Java
码农索隆:好了,我说句公道话,咱三都辛苦了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-11 13:34
offe从四面八方来:我真的没时间陪你闹了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务