建立一顆二叉排序樹,並進行前 中 後序遍歷

2021-10-02 18:53:40 字數 1072 閱讀 5735

輸入一系列整數,建立二叉排序樹,進行前序、中序、後序遍歷。

樣例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 於是需要兩個函式。第乙個把檔案轉化為陣列,第二個把陣列轉化為二叉樹。在這裡...