[NOIp]二叉树的指针实现

今天学到了二叉树,一开始被那个malloc弄的很迷,后来发现root=(BiTreeNode*)malloc(sizeof(BiTreeNode))的那个星号是在后面的,吐血。。

代码里面有个小技巧,就是typedef struct XXX{...}XXX,这样就使用XXX代替了struct XXX,可以少打一些字了233.

#include<bits/stdc++.h>
using namespace std;

typedef struct BiTreeNode {
    int data;
    BiTreeNode* left;
    BiTreeNode* right;
    void operator =(BiTreeNode* b) {
        data=b->data;
        left=b->left;
        right=b->right;
    };
} BiTreeNode;

BiTreeNode *root;

void Create(BiTreeNode* root,int data) { //add a node to the tree
    BiTreeNode* tot;
    BiTreeNode* Father;
    BiTreeNode* current;
    tot=(BiTreeNode*)malloc(sizeof(BiTreeNode));//the new point
    tot->data=data;
    tot->left=NULL;
    tot->right=NULL;
    Father=current=root;
    while (current!=NULL) { //find the leaf
        if (current->data<data) {
            Father=current;
            current=current->right;
        }
        else {
            Father=current;
            current=current->left;
        }
    }
    current=Father;

    if (current->data<data) {
        current->right=tot;
    }
    else {
        current->left=tot;
    }
}
int main()
{
    root=(BiTreeNode*)malloc(sizeof(BiTreeNode));
    root->data=10;
    root->left=NULL;
    root->right=NULL;
    Create(root,25);
    Create(root,5);
    Create(root,30);
    Create(root,12408);
    Create(root,233);
    cout<<233;
    return 0;
}
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 No sacrifice , no victory.
原文地址:https://www.cnblogs.com/pityhero233/p/7305943.html