#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 若右子樹不空,則右子...