二叉排序樹應用之先序 中序 後序的遍歷

2021-10-04 01:48:20 字數 1226 閱讀 4824

二叉排序樹的插入操作無非就是將新新增的數值加入到二叉樹的合適位置上,利用遞迴呼叫實現插入操作。具體實現**,可以參照前面的文章。

關於二叉樹的先中後三種的遍歷,在資料結構中已經學習過無非是,對資料的輸出、遞迴呼叫左子樹、遞迴呼叫右子樹三條語句的順序問題。

先序遍歷核心演算法:根 左 右

void preorder(node* tree)
中序遍歷核心演算法:左 根 右

void inorder(node *tree)
後序遍歷核心演算法:左 右 根

void postorder(node*tree)
輸入一系列整數,建立二叉排序樹,並進行前序,中序,後序遍歷。

輸入第一行包括乙個整數n(1<=n<=100)。

接下來的一行包括n個整數。

可能有多組測試資料,對於每組資料,將題目所給資料建立乙個二叉排序樹,並對二叉排序樹進行前序、中序和後序遍歷。

每種遍歷結果輸出一行。每行最後乙個資料之後有乙個空格。

輸入中可能有重複元素,但是輸出的二叉樹遍歷序列中重複元素不用輸出。

示例1

5

1 6 5 9 8

1 6 5 9 8 

1 5 6 8 9

5 8 9 6 1

#include#include#includeusing namespace std;

struct node;

node tree[105];

int loc;

node *create()

node* insert(node *t,int x)

else if(t->num>x)//左子樹上插入

t->lchild = insert(t->lchild,x);

else if(t->numrchild = insert(t->rchild,x);

return t;

}void preorder(node* tree)

void inorder(node *tree)

void postorder(node*tree)

int main()

//先序遍歷

preorder(tree);cout《注意:一定要注意的是loc與node *t  = null的宣告必須放在while迴圈裡才行,否則會出現陣列溢位情況;另外遞迴呼叫必須要有遞迴出口 

二叉樹 先序 中序 後序

同學整理的,順便傳上分享下 一,已知先序和中序 求後序 1 include2 include3 include4 using namespace std 5char s1 10 s2 10 ans 10 6 int o 0 7 void tree int n char s1 char s2 char...

中序後序,中序先序求二叉樹

用後序,中序求二叉樹 includeusing namespace std int n int a 105 b 105 mapl,r int build int la,int ra,int lb,int rb 再在中序中找到這個數的位置 if i rb return root queueq void...

構造二叉樹 先序 中序 後序 中序

牛客網 給出一棵樹的前序遍歷和中序遍歷,請構造這顆二叉樹 注意 可以假設樹中不存在重複的節點 先遍歷的第乙個數是根節點,中序遍歷的根節點左邊是左子樹,右邊是右子樹。通過先序遍歷遍歷找到根結點,通過中序中根結點的位置可以將樹劃分成兩個子樹,然後遞迴的進行呼叫即可構造好二叉樹。definition fo...