[NOIp]二叉树的指针实现

Posted pityhero的小站

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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;
}

 

以上是关于[NOIp]二叉树的指针实现的主要内容,如果未能解决你的问题,请参考以下文章

java实现线索化二叉树的前序中序后续的遍历(完整代码)

二叉树的非递归遍历

求代码:实现二叉树中所有结点左右子树的交换

Python实现二叉树的非递归中序遍历

uva122 二叉树的实现和层次遍历(bfs)

《数据结构》遍历二叉树的非递归算法的疑问。