實現二叉查詢樹的常見操作

2021-09-27 02:31:47 字數 2105 閱讀 6558

二叉查詢樹的特點是每個節點的左子樹上的節點都小於該節點,右子樹上的節點都大於該節點。

1.實現二叉查詢樹,並且支援插入,刪除,查詢操作

資料結構:

public class treenode 

public treenode(int val)

}

插入:

//建立二叉樹,即插入

public treenode createtree(int data)

treenode current = root;

treenode p = null;

while(current != null)

}else}}

return root;

}

刪除:需要考慮到刪除節點的子節點情況

//刪除

public void delete(int data)

//如果沒有找到刪除的節點,返回空節點

if(p == null) return;

//如果要刪除的節點同時存在左節點和右節點

if(p.left != null && p.right != null)

p.val = minp.val;

// 聯絡後面的**看就知道如何刪除了!

p = minp;

pp = minpp;

}// 刪除的節點是葉子節點,或者只有乙個葉子節點

//記錄要刪除節點的位置

treenode child ;

if(p.left != null) child = p.left;

else if(p.right != null) child = p.right;

else child = null;

//統一刪除

if(pp == null) root = child; // 刪除的是根節點

else if(pp.left == p) pp.left = child;

else pp.right = child;

}

查詢:

//查詢

public void findintree(int data)

else if(p.val > data)

else

}}

2.實現查詢二叉樹中某個節點後繼節點、前驅節點

後繼節點:該節點右子樹最小的節點

前驅結點:該節點左子樹最大的節點

// 查詢某個節點的前驅節點,左子樹的最大節點

public treenode findmax(int data)

else if(p.val > data)

else

}//如果該節點的左子樹為空,返回空

if(p.left != null) p = p.left;

else return null;

//查詢該節點左子樹的最大值

while(p.right != null)

return p;

}// 查詢某個節點的後繼節點,右子樹的最小節點

public treenode findmin(int data)

if(p.right != null)p = p.right;

else return null;

while(p.left != null)

return p;

}

3.實現二叉樹的前,中,後序以及按層遍歷

前,中,後序遍歷:運用遞迴的思想

//前序遍歷

public void preorder(treenode root)

}//中序遍歷

public void midorder(treenode root)

}//後序遍歷

public void lastorder(treenode root)

}

按層遍歷:借助佇列實現

//按層遍歷

public void breadthorder(treenode root)

}}

二叉查詢樹,實現

public class binarytree 移除乙個節點 分三種情況,乙個是 該節點本身是葉子,乙個是 該節點含有乙個兒子節點 乙個是 該節點還有兩個兒子節點 param e param comareelement private binarynoderemove element e,binar...

二叉查詢樹的實現

因為在關聯容器裡面主要的內部結構是rb tree,而紅黑樹又是一種平衡二叉樹,平衡二叉樹又是屬於二叉查詢樹,所以按照 侯捷介紹的順序依次來實現,今天先把二叉查詢樹這種最簡單的實現掉 首先,二叉查詢樹 不像heap中完全二叉樹那樣記憶體分配用線性儲存的,二叉查詢樹一般內部儲存是通過鍊錶來實現的,首先來...

二叉查詢樹的實現

初學者實現了二叉查詢樹的實現 實現的功能包括 建構函式 西溝函式 判空函式 遞迴搜素 非遞迴搜尋 刪除元素 前序遍歷 中序遍歷 後續遍歷 層遍歷 沒有實現 直接上 吧,請大牛指導 標頭檔案 bst.h includeusing namespace std ifndef bst define bst ...