二叉搜尋樹的實現

2021-04-12 19:14:41 字數 2382 閱讀 5876

// 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...