题解 | #二叉树遍历#

二叉树遍历

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);
}

全部评论

相关推荐

10-10 01:10
已编辑
深圳大学 测试开发
面了100年面试不知...:六月到九月,四个项目一个实习,是魔丸吗
投了多少份简历才上岸
点赞 评论 收藏
分享
双尔:反手回一个很抱歉,经过慎重考虑,您与我的预期暂不匹配,感谢您的投递
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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