搜尋二叉樹的遞迴演算法

2021-09-29 09:47:51 字數 1874 閱讀 9763

#include

using

namespace std;

typedef

struct student

*btree,btree;

void

init_tree

(btree &l)

;void

insert_data

(btree &l,

int e)

;//插入節點

void

mid_print

(btree l)

; btree search_data

(btree l,

int e)

;//遞迴查詢節點

btree right_child_min

(btree l)

;void

delete_data

(btree &l,

int e)

;//刪除值為e的節點

intmain()

;for

(int i=

0;i<=

6;i++

)mid_print

(l);

cout<<

"請輸入你想查詢的節點的值"

cin>>n;

btree temp=

search_data

(l,n);if

(temp==

null

)else

cout<<

"你想刪除的值是"

>n;

delete_data

(l,n)

;mid_print

(l);

return0;

}void

init_tree

(btree &l)

void

insert_data

(btree &l,

int e)

//插入節點

else

if(l-

>data==e)

//插入的值和節點值相同,這是不允許發生的

else

if(l-

>dataelse

}void

mid_print

(btree l)

//中序遍歷

} btree search_data

(btree l,

int e)

//遞迴查詢節點

else

if(l-

>data==e)

else

if(l-

>data>e)

else

} btree right_child_min

(btree l)

//得到右邊最小節點的指標

else

if(l-

>right!=

null

)return p;}}

void

delete_data

(btree &l,

int e)

//刪除遞迴

else

if(l-

>dataelse

if(l-

>data>e)

else

if(l-

>data==e)

else

if(l-

>right==

null

&&l-

>left==

null

)else

if(l-

>right==

null

)else

}}

二叉樹的遞迴演算法

二叉樹是一種特殊的資料結構,有乙個根節點,根節點下面有一左一右兩個子節點,每個子節點又有各自的子節點,層層深入成樹狀。關於二叉樹的遍歷我只學習了遞迴遍歷,非遞迴遍歷比較複雜還是很理解。遞迴遍歷分為先序,中序和後序。用三個字母表示遞迴遍歷可以很好理解 d 訪問根節點,l 遍歷根節點的左子樹,r 遍歷根...

樹和二叉樹 二叉樹遍歷的遞迴演算法

all right resvered 檔名稱 樹和二叉樹.cpp 作 者 鄭兆涵 樹和二叉樹 二叉樹遍歷的遞迴演算法 問題 實現二叉樹的先序 中序 後序遍歷的遞迴演算法,並對用 a b d,e h j,k l,m n c f,g i 建立的二叉樹進行測試。程式設計 標頭檔案 btree.h,包含定義...

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

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