树与二叉树

2020-08-13  本文已影响0人  1nvad3r
#include <cstdio>

//二叉树存储结构
struct Node {
    int data;
    Node *lchild;
    Node *rchild;
};

//新建结点
Node *newNode(int v) {
    Node *node = new Node;
    node->data = v;
    node->lchild = node->rchild = NULL;
    return node;
}

//查找所有值为x的结点,把值修改为newdata
void search(Node *root, int x, int newdata) {
    if (root == NULL) {
        return;
    }
    if (root->data == x) {
        root->data = newdata;
    }
    search(root->lchild, x, newdata);
    search(root->rchild, x, newdata);
}

//插入一个新结点,往左子树插
//注意root要使用引用,否则插入不成功
void insert(Node *&root, int x) {
    if (root == NULL) {
        root = newNode(x);
        return;
    }
    insert(root->lchild, x);
}

//二叉树的创建
Node *create(int data[], int n) {
    Node *root = NULL;
    for (int i = 0; i < n; i++) {
        insert(root, data[i]);
    }
    return root;
}
一般来说,如果函数中需要新建结点,即对二叉树的结构做出修改,就需要加引用;如果只是修改当前已有结点的内容,或仅仅是遍历树,就不用加引用。
上一篇下一篇

猜你喜欢

热点阅读