二叉樹 n叉樹 搜尋樹的各種操作

2021-10-06 15:56:47 字數 2704 閱讀 2930

#include

"pch.h"

#include

#include

#include

using

namespace std;

struct node ;

node*

newnode

(int v)

void

search

(node* root,

int x,

int newdata)

//在二叉樹中插入乙個資料域為x的新節點

//注意根節點指標root要使用引用,否則插入不成功

void

insert

(node*

&root,

int x)

insert

(root-

>lchild, x)

;insert

(root-

>rchild, x);}

//建立二叉樹

node*

create

(int data,

int n)

return root;

}//先序遍歷 特點:序列的第乙個節點是根節點

void

preorder

(node* root)

//中序遍歷 特點:序列中知道根節點之後,就能知道左右子樹了

void

inorder

(node* root)

//後序遍歷 特點:序列的最後乙個是根節點

void

postorder

(node* root)

//層次遍歷

void

layerorder

(node* root)

if(now-

>rchild !=

null)}

}//根據中序遍歷和先序遍歷重建二叉樹

int pre=

;int in=

;node*

createby

(int prel,

int prer,

int inl,

int inr)

int numleft = k - inl;

//左子樹節點個數

//左子樹的先序遍歷區間為[prel+1,prel+numleft] 中序遍歷區間為[inl,k-1]

root-

>lchild =

createby

(prel +

1, prel + numleft, inl, k -1)

; root-

>rchild =

createby

(prel + numleft +

1, prer, k +

1, inr)

;return root;

}

一般樹:

const

int maxn =

1000

;struct node node[maxn]

;//建立新節點

int index =0;

intnewnode

(int v)

//樹的先根遍歷

void

preoeder

(int root)

}//樹的層次遍歷

void

layerorder

(int root)

}}

二叉搜尋樹:

const

int maxn =

1000

;struct node

;node*

newnode

(int v)

//查詢二叉查詢樹中資料域為x的節點

void

search

(node* root,

int x)

if(x == root-

>data)

else

if(x < root-

>data)

else

}//插入操作

void

insert

(node*

&root,

int x)

if(x == root-

>data)

else

if(x < root-

>data)

else

}//二叉查詢樹的建立

node*

create

(int data,

int n)

return root;

}//刪除節點:

node*

findmax

(node* root)

return root;

}node*

findmin

(node*root)

return root;

}void

deletenode

(node*

&root,

int x)

else

if(root-

>lchild)

else

}else

if(root-

>data > x)

else

}

樹 二叉樹 二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...

二叉樹 還原二叉樹 二叉搜尋樹

先序遍歷的特點 先遍歷根結點,再遍歷左子樹,最後再遍歷右子樹 中序遍歷的特點 先遍歷左子樹,再遍歷根結點,最後再遍歷右子樹 後序遍歷的特點 先遍歷左子樹,再遍歷右子樹,最後再遍歷根結點 舉例 先序遍歷 a b d f g h i e c 中序遍歷 f d h g i b e a c 如上,根據先序遍...

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

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...