二叉排序樹,若有左子樹,則左子樹上所有結點資料小於根結點資料,
若有右子樹,則右子樹上所有結點資料大於根結點資料。
左,右子樹本身又各是一棵二叉排序樹。
#include
typedef struct bst
bstree;
void insertbst(bstree *t,int key)
p->data = key;
p->left = p->right = null;
head = t;
while(head)
if(key < parent->data)
parent->left = p;
else
parent->right = p;
}void createbst(bstree *t,int data,int n)
return ;
}bstree *searchbst(bstree *t,int key)
void bst_delete(bstree *t,int key)
else if(child == 0)
else
}else if(!p->left)
else if(!p->right)
else
p->data = l->data;
ll->data =1;
ll->left = null;
free(ll);
}p = null;
}else if (key < p->data)
else if(key > p->data)}}
int main()
;for(i=0;i<10;i++)
printf("%d ",source[i]);
printf("\n");
bstree bst,*pos;
createbst(&bst,source,10);
printf("result:");
bst_ldr(&bst);
printf("\n");
printf("enter a num:");
scanf("%d",&key);
pos = searchbst(&bst,key);
if(pos)
printf("search succeed address is %x\n",pos);
else
printf("search failed\n");
bst_delete(&bst,key);
printf("after delete:\n");
bst_ldr(&bst);
printf("\n");
return 0;
}
演算法 二叉樹建立
鏈式儲存結構 struct treenode 層次建立二叉樹 建立二叉樹 treenode createtreebylevel vectornum if queuequeue int index 0 建立根節點 treenode root new treenode num index 入佇列 que...
演算法 二叉樹建立
鏈式儲存結構 struct treenode 層次建立二叉樹 建立二叉樹 treenode createtreebylevel vectornum if queuequeue int index 0 建立根節點 treenode root new treenode num index 入佇列 que...
二叉樹查詢演算法
定義樹節點 class treenode def init self,x self.val x self.left none self.right none先序遍歷,遞迴 def preorder root treenode 遞迴地,先序遍歷二叉樹 if root none return else ...