二叉樹的先序,中序,後序遍歷

2021-07-22 22:22:58 字數 1097 閱讀 5036

此處採用的是遞迴法求出二叉樹的先序,中序,後序遍歷,當然也可以用非遞迴演算法,利用棧求解,但對比覺得用遞迴更簡單 。

此題的思考思路如下,1、寫好標頭檔案  2、定義結構體 ,思考二叉樹中 有哪些屬性,都可以放入二叉樹的結構體中,(結構體可以用 鍊錶儲存,

所以對於節省空間是非常好的手段哦)  3、寫主函式,主函式中當然要建立結構體的物件,然後建立結構體,然後呼叫先序,中序,後序函式,

當然此時的這些函式名都會出現紅色的波浪線,因為你還沒有定義這些函式呀,既然使用了,當然要去建立    4、去建立建立函式,先序函式,中序函式,

後序函式,再根據這個函式的要求,即怎麼做才會得到這個結果的思路轉換成高階語言,如:建立函式,你首先當然要有元素,才能去構建二叉樹  所以

要先傳入元素,char ch = getchar(); 這句就代表元素的輸入,也等價於  char  ch;  cin>>ch;   然後就要判斷從外界得到的值是什麼了,可以是乙個具體的

值也可以是某個特殊的 字元,當然你可以用特殊的字元來代表該位置的元素為空,  如果不為空,則你可以先為這樹分配空間,把值賦值到對應的位置上

很容易發現建立左右孩子跟 建立某個結點是一樣的,所以可以呼叫本身去建立左右孩子,先序,中序,後序函式也是這樣思考,你需要先有思路,再把

//二叉樹的先序,中序,後序遍歷

#include

#include

using namespace std;

//二叉樹結構體的定義

typedef struct node           //node為結構體的名稱

node,*bitree;              //bitree是結構體的指標

//建立函式,構建二叉樹

void create(bitree &bt)      

else

}//列印函式,輸出正在訪問位置的元素值

void  visit(bitree bt)

//先序函式

void preoder(bitree  bt)

}//中序遍歷

void inoder(bitree bt)

}void  postorder(bitree bt)

}int main()

二叉樹先序 中序 後序遍歷

題目 用遞迴和非遞迴方式,分別按照二叉樹先序 中序和後序列印所有的節點。我們約定 先序遍歷順序為根 左 右 中序遍歷順序為左 根 右 後序遍歷順序為左 右 根。遞迴實現 遞迴遍歷二叉樹 先序 public void preorderrecur node head system.out.println...

二叉樹先序遍歷 中序遍歷 後序遍歷

輸入二叉樹的先序遍歷序列和中序遍歷序列,輸出該二叉樹的後序遍歷序列。非建二叉樹版本 include includeusing namespace std string preord,inord void rebuild int preleft,int preright,int inleft,int ...

二叉樹先序遍歷 後序遍歷 中序遍歷

從根部 a 開始,然後開始遍歷左子樹,直接找到 b 檢視 b 有沒有左子樹,有 d,再檢視 d 有沒有子樹,沒有,d 已經是葉子,所以第二個是 d。倒回去,取中 b,第三個數是 b。檢視 b 有沒有右子樹,有 e 檢視 e 有沒有子樹,有 g 左 h 右 所有後面三個數是 egh 先查左子樹,存在繼...