wmy666 提交的代码
提交时间:2022年5月12日 18:27 语言:C++运行时间:0ms占用内存:287K
运行状态: Accepted
题目:二叉树遍历1161

大会员可查看代码,点此开通大会员

                
                    #include<bits/stdc++.h>
using namespace std;
typedef struct node{
    char c;
    struct node *lchild;
    struct node *rchild;
    struct node *parent;
}BiTreeNode, *BiTreeNodePtr;
char str[1000];
BiTreeNodePtr generateBiTree_iterative(char *str){
    stack<BiTreeNodePtr*> tempStack;
    BiTreeNodePtr root = new BiTreeNode;
    tempStack.push(&root);
    for(int i = 0; i < strlen(str);i++){
        BiTreeNodePtr *node = tempStack.top();
        tempStack.pop();
        if(str[i] != '#'){
            (*node)->c = str[i];
            // cout << str[i] << " " << "on tree;;;"<<endl;
            // if(i > 0){
            //     cout << "his parent is" << (*node)->parent->c << endl;
            // }
            (*node)->lchild = new BiTreeNode;
            (*node)->lchild->parent = *node;
            (*node)->rchild = new BiTreeNode;
            (*node)->rchild->parent = *node;
            tempStack.push(&((*node)->rchild));
            tempStack.push(&((*node)->lchild));
        }
        else{
            // cout << i << ": # " << "set null" << endl;
            *node = nullptr;
        }
    }
    while(!tempStack.empty()){
        *tempStack.top() = nullptr;
        tempStack.pop();
    }
    return root;
}
void travelsal_middel(BiTreeNodePtr &node){
    if(node != NULL){
        travelsal_middel(node->lchild);
        cout << node->c << " ";
        travelsal_middel(node->rchild);
    }
}
int main(){
    while(cin >> str){
        BiTreeNodePtr root;
        root = generateBiTree_iterative(str);
        // if(root != NULL) cout << "T" << endl;
        // else cout << "F" << endl;
        // cout << (root->rchild == nullptr) << endl;
        travelsal_middel(root);
        cout << endl;
    }
    return 0;
}