二叉樹的三種遞迴方法

2021-07-23 08:49:05 字數 2092 閱讀 4398

今天學習了二叉樹的知識學習了三種遍歷二叉樹的方法,雖然不知道後面兩種有什麼卵用,但還是講解一下:

第一種:先序遍歷

1、先訪問其節點本身;

2、訪問其左邊的子節點;

3、再訪問其右邊的子節點。

這種遍歷二叉樹的方法其實就是深搜,先訪問左邊一整條線的節點,就相當於搜尋迷宮時朝乙個方向一直走,直到不能走時再換乙個方向,或者回溯一步

第二種:中序遍歷

1、先訪問其左邊的子節點;

2、再訪問其節點本身;

3、最後訪問其右邊的子節點。

不知道怎麼用誒    %>_<%

第三種:後序遍歷

1、先訪問其左邊的子節點;

2、再訪問其右邊的子節點。

3、最後訪問其節點本身;

接下來看兩道例題

一、 二叉樹的建立與遍歷

題目描述

給出一棵二叉樹,分別輸出先序、中序、後序遍歷結果。 輸入

第1行:結點數n(1<=n<=100)

以下若干行,每行3個整數,分別表示父結點、左孩子、右孩子。若沒有孩子,對應的整數為0.

輸出第1行:樹根

第2行:先序遍歷結果,數字間用1個空格分開。

第3行:中序遍歷結果,數字間用1個空格分開。

第4行:後序遍歷結果,數字間用1個空格分開。

樣例輸入

81 2 4

2 0 0

4 8 0

3 1 5

5 6 0

6 0 7

8 0 0

7 0 0

樣例輸出

33 1 2 4 8 5 6 7

2 1 8 4 3 6 7 5

2 8 4 1 7 6 5 3

這道題是在考驗我們的基本功,用三種遞迴方式來遍歷整個二叉樹

如果實在不知道怎麼做的話,**如下,希望能夠有人提出更好的建議:    ~\(≧▽≦)/~

#include#includeusing namespace std;

struct illtr[101];

int n,flag;

void ff(int i)

}void mf(int i)

}void bf(int i)

}int main()

flag=0;

for(i=1;i<=n;i++) }

}

二、

根據兩種遍歷順序確定樹結構(build-tree)

題目描述

輸入第1行:二叉樹的前序遍歷順序第2行:中序遍歷順序 輸出

二叉樹的後序遍歷順序

樣例輸入

copy (如果複製到控制台無換行,可以先貼上到文字編輯器,再複製)

abcdefgh

cbedaghf

樣例輸出

cedbhgfa

這題坑了我足足乙個小時的青春年華 ~~~~(>_<)~~~~

首先,要將這個樹建立出來,可是在除錯的時候,好多bug…………

後來發現了其中大大的奧秘

比如樣例輸入:

abcdefgh(先序)

cbedaghf(中序)

首先,a肯定是樹根,並且就第二行可以看出來,cbed肯定是a的左兒子延伸的,ghf肯定是a的右兒子延伸的,以此類推,樹就建立好了 o(∩_∩)o~

做了很多調整後,ac了!!!!!!!   ^_^

**如下,請教改進的建議:~\(≧▽≦)/~

#include#include#includeusing namespace std;

struct illtr[251];

int n,ll;char ff[255]=,mf[255]=;

int ffv[255]=;

void build(int l,int r,int s,int f)

else}}

break;

} }}void work(char i)

}int main()

{ int i;

scanf("%s%s",ff,mf);

ll=strlen(ff);

for(i=0;i

二叉樹三種遞迴排序

public static void main string args 先序遍歷,返回根節點 public treenode createbinarypre linkedlisttreedata return root public void printbinarytreeprerecur tree...

二叉樹3 三種遍歷(遞迴方法)

遍歷即將樹的所有結點訪問且僅訪問一次。按照根節點位置的不同分為前序遍歷,中序遍歷,後序遍歷。前序遍歷 根節點 左子樹 右子樹 中序遍歷 左子樹 根節點 右子樹 後序遍歷 左子樹 右子樹 根節點 用遞迴方法實現三種遍歷還是比較簡單的,也比較好理解。前序 void pre order btreenode...

二叉樹的三種非遞迴遍歷方法

frontsearch函式用於前序遍歷二叉樹。void frontsearch binarytree root 在將子節點進行入棧時,由於要先遍歷左節點,後遍歷右節點,所以要先將右節點入棧,再將做節點入棧。middlesearch函式用於中序遍歷二叉樹。void middlesearch binar...