#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;
}
一般来说,如果函数中需要新建结点,即对二叉树的结构做出修改,就需要加引用;如果只是修改当前已有结点的内容,或仅仅是遍历树,就不用加引用。
网友评论