二叉树链表结构表示法

二叉树链表的结构声明:

  struct  tree

{

         int data;

         struct tree *left;

         stryct tree *right;

};

        typedef struct tree treenode;

        typedef  treenode *btree;

二叉树链表结构表示法

    
#include " iostream "
using namespace std;

struct tree // 二叉树结构声明
{
int data;
struct tree * left;
struct tree * right;

};
typedef
struct tree treenode;
typedef treenode
* btree;
/* ----插入二叉树的结点------- */


btree insertnode(btree root,
int value)
{
btree newnode;
// 树根指针
btree current; // 目前树结点指针
btree back; // 父结点指针

/* -----创建结点内存---- */
newnode
= (btree)malloc( sizeof (treenode));
/* -------初始化----- */
newnode
-> data = value;
newnode
-> left = NULL;
newnode
-> right = NULL;

if (root == NULL) // 是否为根结点
{
return newnode;
}
else
{
current
= root; // 保留目前树指针
while (current != NULL)
{
back
= current;
if (current -> data > value)
current
= current -> left;
else
current
= current -> right;
}
if (back -> data > value)
back
-> left = newnode;
else
back
-> right = newnode;

}
return root;

}
/* ----创建二叉树--- */
btree createbtree(
int * data, int len)
{

btree root
= NULL;
int i;

for (i = 0 ;i < len;i ++ )
root
= insertnode(root,data[i]);
return root;
}
/* -------儿二叉树的输出------- */
void printbtree(btree root)
{
btree ptr;
ptr
= root -> left;
printf(
" 输出左子树:\n " );
while (ptr != NULL)
{
printf(
" [%2d]\n " ,ptr -> data);
ptr
= ptr -> left;
}
ptr
= root -> right;
printf(
" 输出右子树:\n " );
while (ptr != NULL)
{
printf(
" [%2d]\n " ,ptr -> data);
ptr
= ptr -> right;
}

}
/* ------链表二叉树--------- */
int main()
{
btree root
= NULL;
int data[ 10 ] = { 5 , 6 , 4 , 8 , 2 , 3 , 7 , 1 , 9 };
root
= createbtree(data, 9 );

printf(
" 树的结点内容:\n " );
printbtree(root);

}

转载于:https://my.oschina.net/garyun/blog/602883

猜你喜欢

转载自blog.csdn.net/weixin_34092370/article/details/91774321