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