// binarysearchtree.h: inte***ce for the binarysearchtree class.
////
#include "binarytreenode.h"
#include "binarytree1.h"
#if !defined(afx_binarysearchtree_h__1cd2ff9d_73f2_4194_974a_12892dfb325f__included_)
#define afx_binarysearchtree_h__1cd2ff9d_73f2_4194_974a_12892dfb325f__included_
#if _msc_ver > 1000
#pragma once
#endif // _msc_ver > 1000
template
class binarysearchtree:public binarytree
;virtual ~binarysearchtree(){};
void insertnode(binarytreenode* root,binarytreenode* newpointer);
void deletenode(binarytreenode* pointer);
void deletenodeex(binarytreenode* pointer);
};template
void binarysearchtree::insertnode(binarytreenode* root,binarytreenode* newpointer)
else pointer=root;
while(1)
else pointer=pointer->leftchild();
}else
else pointer=pointer->rightchild();}}
}template
void binarysearchtree::deletenode(binarytreenode* pointer)
else temppointer=pointer->leftchild();
//在左子樹中找對稱序的最後乙個結點
while(temppointer->rightchild()!=null)
temppointer=temppointer->rightchild();
//被刪除結點的右子樹作為temppointer的右子樹
temppointer->right=pointer->rightchild();
//被刪除結點的左子樹根代替被刪除結點
if(parent==null)
root=pointer->leftchild();
else if(parent->leftchild()==pointer)
parent->left=pointer->leftchild();
else
parent->right=pointer->leftchild();
delete pointer;
pointer=null;
return;
}template
void binarysearchtree::deletenodeex(binarytreenode* pointer)
//當待刪除節點左子樹不為空,就在左子樹中尋找最大節點替換待刪除節點
temppointer = pointer->leftchild();
while(temppointer->rightchild() != null )
//刪除替換結點
if(tempparent==null)
pointer->left=temppointer->leftchild();
else
tempparent->right=temppointer->leftchild();
//用替換結點去替代真正的刪除結點
if(parent==null)
root=temppointer;
else if( parent->leftchild() == pointer )
parent->left=temppointer;
else parent->right=temppointer;
temppointer->left=pointer->leftchild();
temppointer->right=pointer->rightchild();
delete pointer;
pointer=null;
return;
}#endif // !defined(afx_binarysearchtree_h__1cd2ff9d_73f2_4194_974a_12892dfb325f__included_)
二叉搜尋樹 二叉搜尋樹
題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...
二叉搜尋樹的實現
includeusing namespace std 二叉搜尋樹左兒子的值比當前節點小,右兒子的數值比當前節點大 struct node 建立樹 node insert node p,int x else return p 查詢 bool find node p,int x else return ...
二叉搜尋樹的實現
二叉搜尋樹的刪除 1 沒有左孩子,直接把右孩子替代刪除結點 2 有左孩子但左孩子沒有右孩子,則把左孩子替代刪除結點 3 其它,把左孩子的最大的結點替代刪除結點 時間複雜度o logn include include struct node node ins node p,int val else e...