?? 7_3_3.c
字號:
/* ======================================== */
/* 程式實例: 7_3_3.c */
/* 二叉樹的鏈結結構表示法 */
/* ======================================== */
#include <stdlib.h>
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)
{
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; /* 右子節點 */
}
}
/* ---------------------------------------- */
/* 主程式: 建立鏈結的二叉樹且列印出來. */
/* ---------------------------------------- */
void main()
{
btree root = NULL; /* 樹根指標 */
/* 二叉樹節點數據 */
int data[10] = { 5, 6, 4, 8, 2, 3, 7, 1, 9 };
root = createbtree(data,9); /* 建立二叉樹 */
printf("樹的節點內容 \n");
printbtree(root); /* 列出二叉樹內容 */
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -