<?php
/** * created by phpstorm.
* user: baimayou
* date: 19-3-20
* time: 下午6.00
* 二叉查詢樹
* 二叉查詢樹要求,在樹中的任意乙個節點,其左子樹中的每個節點的值,都要小於這個節點的值,而右子樹節點的值都大於這個節點的值
*///定義二叉樹的節點
class node
}//二叉查詢樹的新增
function buildsearchtree($tree,$value)
$newnode = new node($value);
while($tree != null)
$tree = $tree->left;
}else
$tree = $tree->right;}}
}//二叉查詢樹的刪除
/** * 第一種情況是,如果要刪除的節點沒有子節點,我們只需要直接將父節點中,指向要刪除節點的指標置為 null。
* 第二種情況是,如果要刪除的節點只有乙個子節點(只有左子節點或者右子節點),我們只需要更新父節點中,指向要刪除節點的指標,
* 讓它指向要刪除節點的子節點就可以了
* 第三種情況是,如果要刪除的節點有兩個子節點,這就比較複雜了。
* 我們需要找到這個節點的右子樹中的最小節點,把它替換到要刪除的節點上。然後再刪除掉這個最小節點,
* 因為最小節點肯定沒有左子節點(如果有左子結點,那就不是最小節點了)
* **/
//找到該節點並刪除
function deletebst(&$tree,$value)
if($tree->data == $value)elseif ($tree->data < $value)else
}//調整刪除後樹的形態
function delete(&$bitree) else if ($bitree->right === null) else
$bitree->data = $delnode->data;
// if ($bitree == $parnode) else
}}function preorder($tree)
}$a = new node('3');
buildsearchtree($a,'6');
buildsearchtree($a,'2');
buildsearchtree($a,'1');
buildsearchtree($a,'5');
buildsearchtree($a,'4');
buildsearchtree($a,'7');
buildsearchtree($a,'8');
buildsearchtree($a,'9');
preorder($a);
deletebst($a,8);
echo "
";preorder($a);
二叉查詢樹,實現
public class binarytree 移除乙個節點 分三種情況,乙個是 該節點本身是葉子,乙個是 該節點含有乙個兒子節點 乙個是 該節點還有兩個兒子節點 param e param comareelement private binarynoderemove element e,binar...
二叉查詢樹的實現
因為在關聯容器裡面主要的內部結構是rb tree,而紅黑樹又是一種平衡二叉樹,平衡二叉樹又是屬於二叉查詢樹,所以按照 侯捷介紹的順序依次來實現,今天先把二叉查詢樹這種最簡單的實現掉 首先,二叉查詢樹 不像heap中完全二叉樹那樣記憶體分配用線性儲存的,二叉查詢樹一般內部儲存是通過鍊錶來實現的,首先來...
二叉查詢樹的實現
初學者實現了二叉查詢樹的實現 實現的功能包括 建構函式 西溝函式 判空函式 遞迴搜素 非遞迴搜尋 刪除元素 前序遍歷 中序遍歷 後續遍歷 層遍歷 沒有實現 直接上 吧,請大牛指導 標頭檔案 bst.h includeusing namespace std ifndef bst define bst ...