二叉树的建立和遍历

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

typedef struct node
{
    char data;
    struct node *lchild;
    struct node *rchild;
}Node;
void buildTree(Node *&node)
{
    char data;
    scanf("%c",&data);
    if(data=='#')   //如果输入的是'#',则该节点为NULL
    {
        node=NULL;
        return;
    }
    else
    {
        node=new Node;
        node->data=data;
        buildTree(node->lchild);  //递归地构建左子树
        buildTree(node->rchild);  //递归地构建右子树
        return;
    }
}
void preOrder(Node *root)
{
    if(root)
    {
        cout<<root->data;
        preOrder(root->lchild);
        preOrder(root->rchild);
    }
}
int main()
{
    Node *root;
    buildTree(root);    //样例输入:124##5##3##
    preOrder(root);     //前序遍历输出:12453
    return 0;
}

  

人生如修仙,岂是一日间。何时登临顶,上善若水前。
原文地址:https://www.cnblogs.com/f-society/p/6668330.html