不积跬步,无以至千里;不积小流,无以成江海
上接:
一、树与二叉树Ⅰ
2.4.6 二叉树的静态实现
二叉树的静态写法是指不使用指针,直接用数组存树.
原先的二叉树我们是这么实现的:
struct node {
typename data;
node* lchild;
node* rchild;
};
我们用两个指针指向了左右孩子,但是现在,我们改变一下方式,我们将其中的指针用int来代替.
struct node {
typename data; //数值域
int lchild;
int rchild; //二叉静态链表
};
node Node[MAXN]; //结点数组
这时,结点的生成就要这样写:
int index = 0;
int newNode(typename v) {
//生成新节点
Node[index].data = v; //赋值
Node[index].lchild = -1; //初始状态下,没有左右子树
Node[index].rchild = -1;
return ++index;
}
其它的基本操作也一样;若不懂思想,或是想用指针写,这里详细介绍
//更改
void change(int root, typename x, typename newdata) {
//找到x,把它改成newdata,root为下标
if(root == -1) //死胡同
return;
if(Node[root].data == v) {
//找到了
Node[root].data = newdata;
return;
}
change(Node[root].lchild, x, newdata);
change(Node[root].rchild, x, newdata);
}
//插入
void insert<