以下程序顯示瞭如何在C程序中構建二叉樹。它使用動態內存分配,指針和遞歸。二叉樹是一個非常有用的數據結構,因爲它允許在排序列表中進行高效插入,搜索和刪除。由於這樣的樹本質上是一個遞歸定義的結構,所以遞歸編程是處理它的自然和有效的方式。爲什麼在這個編程中使用指針指針?
tree
empty
node left-branch right-branch
left-branch
tree
right-branch
tree
下面的代碼:
#include <stdlib.h>
#include <stdio.h>
struct tree_el {
int val;
struct tree_el * right, * left;
};
typedef struct tree_el node;
void insert(node ** tree, node * item) {
if(!(*tree)) {
*tree = item;
return;
}
if(item->val<(*tree)->val)
insert(&(*tree)->left, item);
else if(item->val>(*tree)->val)
insert(&(*tree)->right, item);
}
void printout(node * tree) {
if(tree->left) printout(tree->left);
printf("%d\n",tree->val);
if(tree->right) printout(tree->right);
}
void main() {
node * curr, * root;
int i;
root = NULL;
for(i=1;i<=10;i++) {
curr = (node *)malloc(sizeof(node));
curr->left = curr->right = NULL;
curr->val = rand();
insert(&root, curr);
}
printout(root);
}
爲什麼使用指針到指針?
可否請你用4個空格縮進程序的每一行?這將使其格式正確。 – Edmund 2009-12-16 09:24:22
這是功課嗎?它看起來像。 – 2009-12-16 09:47:05
nopes。我試圖刷新我的指針概念,但堅持在這裏 – emkrish 2009-12-16 09:56:45