1. 程式人生 > >[NOIp]二叉樹的指針實現

[NOIp]二叉樹的指針實現

++ main pan code while malloc 技巧 root left

今天學到了二叉樹,一開始被那個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; }

[NOIp]二叉樹的指針實現