C 二叉搜尋樹

2021-10-02 12:45:09 字數 2631 閱讀 3308

二叉搜尋樹里比較複雜的就是刪除節點的操作,原理網上有很多說得很細,其中我綜合借鑑了幾個博主的刪除操作,才終於整明白了。

test.h

#include

#include

using

namespace std;

struct node ;}

;class

tree

;

test.cpp

#include

"stdafx.h"

#include

"test.h"

tree::

tree()

tree::

tree

(vector<

int> a)

}tree::

~tree()

void tree::

inorder()

void tree::

preorder()

void tree::

postorder()

int tree::

minval()

return cur-

>val;

}int tree::

maxval()

return cur-

>val;

}void tree::

remove

(int x)

void tree::

destroy()

bool tree::

isempty()

return

false;}

void tree::

destroy

(node*

&root)

if(root-

>right)

delete

(root)

; root =

null

;return;}

void tree::

remove

(node*

&t,int x)

else

if(x > t-

>val)

elseif(

!t->left ||

!t->right)

else

t->val = cur-

>val;

remove

(t->right, cur-

>val);}

}}void tree::

push

(int x)

node* cur = root;

node* pre =

null

;while

(cur !=

null

)else}if

(pre-

>val > x)

else

return;}

void tree::

inorder

(node* cur)

inorder

(cur-

>left)

; cout << cur-

>val <<

"->"

;inorder

(cur-

>right)

;return;}

void tree::

preorder

(node * cur)

void tree::

postorder

(node * cur)

node * tree::

search

(int x)

else}if

(cur ==

null

)cout <<

"no such value in the tree."

<< endl;

return cur;

}

測試的主函式

#include

"stdafx.h"

#include

"test.h"

intmain()

; tree a

(c);

a.inorder()

; a.

postorder()

; a.

preorder()

;for

(auto i : c)

a.inorder()

; a.

remove(3

);a.inorder()

; vector<

int> t1 =

; tree b1

(t1)

; b1.

inorder()

; b1.

remove(20

);b1.

inorder()

; b1.

push(-

1); b1.

inorder()

; b1.

destroy()

; b1.

isempty()

;system

("pause");

return0;

}

二叉搜尋樹 二叉搜尋樹

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