二叉排序樹 二叉搜尋樹

2021-08-03 15:49:42 字數 2336 閱讀 5697

bstree

bst.h

#pragma once

template//友元類宣告

class bstree;//友元類宣告

templateclass bstnode//自定義的結點型別及特徵

bstnode(type d, bstnode*left=null, bstnode*right=null)//初始化

: data(d), leftchild(left),rightchild(right)

{} ~bstnode()

{}private:

type data;

bstnode *leftchild;

bstnode *rightchild;

};templateclass bstree//二叉排序樹

bstree(type *ar, int n) : root(null)

bstnode* parent(const type &key)const//尋找某個關鍵數的父結點

void sortprint()const//列印出各結點樹

bool equal(const bstree&bst)const//判斷兩個樹,是否完全相等,是否相同

void copy(const bstree&bst)//複製乙個樹

///bool remove(const type &key)//刪除某個結點

protected:

void makeempty()

protected:

bool remove(bstnode*&t, const type &key)

else if(t->leftchild!=null && t->rightchild==null)

else if(t->leftchild==null && t->rightchild!=null)

else

return true;

} }

void makeempty(bstnode*&t)

}

bool equal(bstnode*t1, bstnode*t2)const

bstnode* copy(bstnode*t)

void sortprint(bstnode*t)const

}

bstnode* parent(bstnode*t, const type &key)const

bstnode* search(bstnode*t, const type &key)const

type& max(bstnode*t)

type& min(bstnode*t)

bool insert(bstnode*&t, const type &x)

else if(x < t->data)

insert(t->leftchild, x);

else if(x > t->data)

insert(t->rightchild, x);

else

return false;

}private:

bstnode*root;

};

main.cpp

#include//#includeusing namespace std;

#include"bst.h"

void main()

; int n = sizeof(ar) / sizeof(int);

bstreebst(ar, n);

bst.remove(78);//檢測刪除}/*

void main()

; int n = sizeof(ar) / sizeof(int);

bstreebst(ar, n);

cout<<"max value = "<*p = bst.search(17);//尋找17這個數,有則返回,沒有則返回為空

bstnode*pa = bst.parent(23);//找23的父結點

bst.sortprint();//列印排序後的數

coutbst1.copy(bst);//複製

bool flag = bst.equal(bst1);//判斷兩樹是否相等,相等的話返回標誌flag=1

cout<<"flag = "for(int i=0; i

二叉搜尋樹(二叉排序樹)

描述 判斷兩序列是否為同一二叉搜尋樹序列 題目類別 樹 難度 中級 執行時間限制 10sec 記憶體限制 128mbyte 階段 入職前練習 輸入 開始乙個數n,1 n 20 表示有n個需要判斷,n 0 的時候輸入結束。接下去一行是乙個序列,序列長度小於10,包含 0 9 的數字,沒有重複數字,根據...

二叉搜尋樹(二叉排序樹)

全部資料結構 演算法及應用課內模板 二叉搜尋樹 二叉排序樹 binary search tree bst 二叉搜尋樹很簡單,就是左子樹的所有結點的鍵值小於根結點,右子樹的所有結點的鍵值大於根結點 這樣就能使插入與搜尋達到log級別 非常簡單 稍微說一說刪除吧 刪除分兩類 合併刪除和複製刪除 1 合併...

二叉排序樹 二叉搜尋樹 二叉查詢樹

特點 結構體定義struct node 建樹 建二叉排序樹 void create node root,int t else if t root data create root lc,t else create root rc,t 前序遍歷 層序 字典序 int flag int pre 1001...