题解 | #二叉树遍历#

二叉树遍历

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

//若字符后面不是#,则一定为左子树,左子树递归完后(##结束),递归右子树即可
#include "stdio.h"
#include "string"
using namespace std;
struct TreeNode{
    char data;
    TreeNode *leftChild;
    TreeNode *rightChild;
};

TreeNode *RebuildTree(string &preList){
    if (preList.size()==0)
        return NULL;
    else{
        if(preList[0] == '#'){
            preList = preList.substr(1);
            return NULL;
        } else{
            TreeNode *node = new TreeNode;
            node->data = preList[0];
            preList = preList.substr(1);
            node->leftChild = RebuildTree(preList);
            node->rightChild = RebuildTree(preList);
            return node;
        }
    }
}

void InOrder(TreeNode *root){
    if (root!=NULL){
        InOrder(root->leftChild);
        printf("%c ",root->data);
        InOrder(root->rightChild);
    }
    return;
}

int main(){
    char preList[101];
    while (scanf("%s",preList)!=EOF){
        string str = preList;
        TreeNode *root = RebuildTree(str);
        InOrder(root);
        printf("\n");
    }
}

全部评论

相关推荐

11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务