二叉排序樹 插入 刪除 查詢

2021-07-09 18:59:41 字數 1376 閱讀 2332

原本是想寫關於android分享功能的部落格,但是沒真機不好去測試,大白天的手機被3歲娃娃,拿去看少兒頻道了,

關於二叉排序樹的定義是

二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹:

(1)若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值;

(2)若右子樹不空,則右子樹上所有結點的值均大於它的根結點的值;

(3)左、右子樹也分別為二叉排序樹;

(4)沒有鍵值相等的節點。

// ******.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include using namespace std;

#include #include #include typedef struct btnodebtnode;

//遞迴查詢法

btnode *bstsearch(btnode *bt,int key)else

}//非遞迴查詢法

btnode *nobstsearch(btnode *p,int key)else

} if(p==null)elseelse

return bstinsert(bt->rchild,key); }}

//非遞迴插入法

int bstinsert2(btnode *&t,int key)

while (q->lchild!=p&&q->rchild!=p)

else

}elseelse

} }return 1;

}//非遞迴刪除

bool delbst(btnode *&t,int x)

else if(x < p->key)

else

}if(p == null)

if(p->lchild == null && p->rchild == null)

else if(q->lchild == p)else

free(p); //釋放節點p

}else if(p->lchild == null || p->rchild == null)

else

}else

else if(q->lchild == p && p->rchild)

else if(q->rchild == p && p->lchild)

else

}free(p);

}else

p->key = s->key; //把節點s的值賦給p

if(t == p)

else

free(s);

}return find;

}int main()

二叉排序樹的查詢 插入 刪除

二叉排序樹的查詢 插入 刪除 何謂二叉排序樹 定義 二叉排序樹又稱二叉查詢樹,它或者是一顆空樹,或者是具有以下性質的二叉樹 1 若它的左子樹不空,則左子樹上所有節點的值均小於該節點的值。2 若它的右子樹不空,則右字樹上所有節點的值均大於該節點的值。3 它的左右子樹也分別為二叉排序樹。時間複雜度 o ...

二叉排序樹的查詢(插入 刪除)

近期逐步開始期末複習,在部落格上投入的精力將大幅減少大概一月左右!二叉樹的二叉鍊錶結點結構定義 typedef struct bitnodebitnode,bitree 遞迴查詢二叉排序樹t中是否存在key,指標f指向t的雙親,其初始呼叫值位null,若查詢成功,則指標p指向該資料元素結點,並返回t...

二叉排序樹的查詢,插入,刪除

老規矩先上 include 這裡我們設了兩個引用,乙個是b是a的引用,乙個是c是b的引用,即a就是b就是c,三者等價 voidf1 int voidf2 int intmain voidf1 int b voidf2 int c 最終執行的結果為 從結果可以看出,a,b,c三者共用同一儲存單元.最後...