二叉排序樹的建立,刪除

2021-06-09 11:09:24 字數 1285 閱讀 1568

最近在複習資料結構,對於二叉排序樹,看了一些書,參考別人的思想寫出了這個**,希望看到的人給點修改建議

**如下:

#include #include typedef struct bitree

bitree;

typedef struct bitree * ibitree;

ibitree q;

int searchtree(ibitree s,int dt,ibitree p)

else

else if(dt < s->data)

return searchtree(s->pleft,dt,s);

else

return searchtree(s->pright, dt,s); }

}ibitree createbitree(ibitree s,int dt)

else

}} return s;

}ibitree delete(ibitree s,int num)

else if((s->pright != null)&&(s->pleft ==null))

else

p->pright = s->pright;

s = s->pleft;

free(r);

}}

} else

else if((p->pright != null)&&(p->pleft ==null))

else

t->pright = p->pright;

q->pleft = p->pleft;

free(r);}}

}else

else if((p->pright != null)&&(p->pleft ==null))

else

t->pright = p->pright;

q->pright= p->pleft;

free(r);}}

}} }

return s;

}void intrvel(ibitree s)

}int main()

; ibitree root = null;

int i;

for(i = 0; i< 10;i++)

intrvel(root);

printf("\n");

root = delete(root, 45);

intrvel(root);

printf("\n");

return 0;

}

二叉排序樹刪除

二叉排序樹的刪除情況比較複雜,有以下三種情況需要考慮 第一種情況 刪除葉子節點 思路 第二種情況 刪除只有一棵子樹的節點,比如1 思路 如果targetnode有右子節點 第三種情況 刪除有兩棵子樹的節點 比如 7,3,10 思路 public class binarysorttreedemo bi...

構造二叉排序樹(BST) 二叉排序樹的刪除

主要是刪除操作 include include using namespace std typedef int elementtype typedef struct treenode threadtree void visit treenode node void inorder threadtre...

建立二叉排序樹

建立二叉排序樹 1 建立二叉排序樹,二叉樹排序樹有個特點,如果結點值大於根,則在右子樹去查詢插入位置,如果小於樹根,在左子樹去查詢樹根,如果相等,不作任何操作 2 根據上面的特性,需要兩個結點,分別是當前結點和父節點 3 先遍歷二叉樹節點,找到要插入的位置,根據父節點的指向要插入的位置 實現過程如下...