第一种:
依次编号,凡是空着的地方,也标号,将有数字的填入,反之空着
则,父节点若为n,则左子树为2n,右子树为2n+1,通过下标之间的函数关系来判断层数,但你可以想像,如果空的数据比较多,则数组的方法并不适用
接下来说一说结构体的结构
struct tree
{
int left;
int data;
int right;
};
typedef struct tree treenode;
treenode b_tree[15];
最后一种谈谈链式表
struct tree
{
struct tree *left;
int data;
struct tree *right;
}
typedef struct tree treenode;
treenode *b_tree;
在遍历的方法上根据data的位置可以分为前序中序和后序
前序DLR 中序LDR 后序LRD
此处提供前序遍历方法
void preorder(b_tree point)
{
if(point!=NULL)
{
printf("%d",point->data);
preorder(point->left);
preorder(point->right);
}
}
很简单,能看得出来使用的是递归,这是个非常好的方法,如果实在理解不了,强记住就好。