輸入一系列整數,建立二叉排序樹,進行前序、中序、後序遍歷。
樣例1:
輸入:5
1 6 5 9 8
輸出:1 6 5 9 8
1 5 6 8 9
5 8 9 6 1
思路:先建二叉排序樹,再進行遍歷。關鍵在於建樹操作,詳見注釋。
/*
輸入一系列整數,建立二叉排序樹,並進行前序,中序,後序遍歷
*/#include
using
namespace std;
struct nodetree[
100]
;int cnt=0;
//樹的節點數
//建立乙個新節點
node *
create()
//插入節點,建二叉排序樹樹(關鍵)
node *
insert
(node *t,
int x)
else
if(x>t-
>data)
t->rchild=
insert
(t->rchild,x)
;else
if(x>data)
t->lchild=
insert
(t->lchild,x)
;return t;
}//前序遍歷
void
preorder
(node *t)
//中序遍歷
void
inorder
(node *t)
//後序遍歷
void
postorder
(node *t)
intmain()
preorder
(t);
printf
("\n");
inorder
(t);
printf
("\n");
postorder
(t);
printf
("\n");
}
由有序序列建立一顆高度最小的二叉排序樹
實驗題目 由有序序列建立一顆高度最小的二叉排序樹 實驗目的 掌握二叉排序樹的構造過程及其演算法設計 實驗內容 設計程式,對於給定的乙個有序的關鍵字序列,建立一顆高度 最小的二叉排序樹。解決思路 要建立一顆高度最小的二叉排序樹,就必須讓左右子樹的結點 個數越接近越好。由於給定的是乙個關鍵字有序序列a ...
在一顆二叉排序樹上刪除節點
二叉排序樹上,刪除二叉樹節點,有三種情況需要考慮 1 如果刪除的是葉子節點 需要考慮兩種情況,左節點和右節點 如果是左節點,則把父節點的左節點設為null,同理是父節點右節點設為null 2 如果刪除的節點只有乙個子節點,那麼需要考慮子節點是在左邊還是右邊 如果子節點是在左邊,還要考慮被刪除的節點是...
用檔案建立一顆二叉樹
本次使用到的類有 fstream類 string類 include fstream include string 首先建立乙個txt文字 這代表了一棵二叉樹 如圖 三個符號分別對應 資料 左孩子 右孩子 存在為1,不存在為0 於是需要兩個函式。第乙個把檔案轉化為陣列,第二個把陣列轉化為二叉樹。在這裡...