#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 如上,根據先序遍...