C 二叉搜尋樹

2021-10-24 04:43:32 字數 2684 閱讀 9215

#pragma once

template

<

typename t>

class

bst;

template

<

typename t>

class

bstnode

bstnode

(t value)

private

: bstnode

* lchild,

* rchild,

* parent;

t data;};

template

<

typename t>

class

bst//插入操作

void

insert

(bstnode

* node)

;//二叉查詢樹的中序遍歷,就相當於排序了

void

insort

(bstnode

* node)

;//按節點刪除

void

deletenode

(bstnode

* node)

;//按數值刪除

void

deletenode

(const t& t)

; bstnode

*search

(t key)

; bstnode

* root =

nullptr

;private

:int count;};

template

<

typename t>

void bst

::insert

(bstnode

* node)

else

} node-

>parent = temp;

//temp **當前最後遍歷的node,設定node->parent為該節點

if(temp ==

nullptr

)else

else}}

template

<

typename t>

void bst

::insort

(bstnode

* node)

}template

<

typename t>

inline

void bst

::deletenode

(bstnode

* node)

else

delete node;

count--;}

else

if(node-

>rchild !=

nullptr

&& node-

>lchild ==

nullptr

)else

else

delete node;

count--;}

}else

if(node-

>lchild !=

nullptr

&& node-

>rchild ==

nullptr

)//存在左孩子

else

else

delete node;

count--;}

}else

if(curp-

>rchild !=

nullptr

)else

}else

else

//curp->parent->lchild = nullptr;

}//替curp 替換 node

curp-

>parent = p;

curp-

>lchild = node-

>lchild;

curp-

>rchild = node-

>rchild;

if(p-

>lchild == node)

//判斷node 是p 的左孩子還是右孩

else

delete node;

count--;}

}template

<

typename t>

inline

void bst

::deletenode

(const t& k)

}template

<

typename t>

inline bstnode

* bst

::search

(t k)

else

if(k > node-

>data)

else

}return node;

}

#include

"bst.h"

////#include "pch.h"

#include

#include

"bst.h"

using

namespace std;

intmain()

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 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...

二叉搜尋樹c 二叉搜尋樹的遍歷

可以總結出三條性質 1 非空左子樹的所有鍵值小於根節點的鍵值。2 非空右子樹的所有鍵值大於根節點的鍵值。3 左右子樹都是二叉搜尋樹。他的遍歷有三種形式 先序遍歷 中序遍歷 後序遍歷。1 先序遍歷 根節點 左子樹 右子樹 首先訪問根節點,然後遍歷左子樹,最後右子樹。並且自遍歷左右子樹時,仍然先訪問根節...

C 二叉搜尋樹

二叉搜尋樹.include using namespace std template type class bstnode templatetype class bsttree return in bsttree vef 1 root null bsttree const bsttree bst b...