题解 | #二叉树遍历#

二叉树遍历

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


#include<bits/stdc++.h>
using namespace std;
struct TreeNode{
    char data;
    TreeNode* left;
    TreeNode* right;
    TreeNode(char c): data(c), left(NULL), right(NULL){}
};
void buildTree(TreeNode* &root, string &str){
    //递归终止条件
    if(str.empty())return ;
    if(str[0] == '#'){
        str.erase(0, 1);
        return ;
    }
    //继续递归
    root = new TreeNode(str[0]);//生成新结点
    str.erase(0, 1);
    buildTree(root->left, str);
    buildTree(root->right, str);
}
void traverse_inorder(TreeNode* root){
    //递归终止条件
    if(root == NULL)return ;
    //继续递归
    traverse_inorder(root->left);
    cout << root->data <<' ';
    traverse_inorder(root->right);
}
int main(){
    string input = "";
    TreeNode* tree = NULL;
    while(cin >> input){
        delete tree;//释放指针所指内存
        tree = NULL;//指针置NULL

        //前序构造二叉树
        buildTree(tree, input);
        //中序遍历
        traverse_inorder(tree);

    }
    return 0;
}


全部评论

相关推荐

无一技之长怎么办:别去右边,售前,实施,需求分析一起,这是把人当牛马用啊,快跑,这些岗位天花板很低的
点赞 评论 收藏
分享
02-08 15:53
门头沟学院 Java
CoderEcho:让公司知道便宜没好货
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务