演算法 二叉樹的建立,查詢,刪除

2021-07-31 12:12:44 字數 1364 閱讀 5600

二叉排序樹,若有左子樹,則左子樹上所有結點資料小於根結點資料,

若有右子樹,則右子樹上所有結點資料大於根結點資料。

左,右子樹本身又各是一棵二叉排序樹。

#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 ...