對於二叉樹,原來始終不明白用遞迴前序建立,前序遍歷究竟是怎麼回事,今天晚上好好琢磨了下。
兩種不同的方法:
1、可以考慮把遞迴呼叫的函式考慮為呼叫不同的函式,方便分析。
2,如果考慮為呼叫同乙個函式時,遞迴是用棧來實現的,用棧來分析的話就比較方便。
對於如圖所示的乙個二叉樹,前序建立時的**為:
/**
* @brief 遞迴前序建立二叉樹
* @attention 按前序輸入二叉樹中結點的值,#表示空樹,構造二叉鍊錶表示二叉樹t
*/int precreatebitree(bitnode *&t)
}
我們鍵盤輸入為字串"abd###cf##g##"。
用第一種方法分析時:
用第二種方法分析時:建立左子樹遞迴呼叫precreatebitree(t->lchild)時,依次入棧為a、b、d,然後依次d、b、a出棧。
二叉樹建立和遍歷
二叉樹建立遍歷規則 1.先序 根 左 右 2.中序 左 根 右 3.後序 左 右 根 二叉樹定義和輔助函式如下 struct node void visit int data int indata 先序建立二叉樹 struct node createbitree 先序建立乙個二叉樹 return t...
二叉樹建立和遍歷
include include 帶返回值建立二叉樹 最簡單方法 節點資料結構 struct bs node typedef struct bs node tree tree head,p,root 建立二元查詢樹 有返回值的可以不傳參 沒有的話如何傳參 輸入0代表到了某個葉子節點 tree crea...
二叉樹建立和遍歷
二叉樹建立遍歷規則 1.先序 根 左 右 2.中序 左 根 右 3.後序 左 右 根 二叉樹定義和輔助函式例如以下 struct node void visit int data int indata 先序建立二叉樹 struct node createbitree 先序建立乙個二叉樹 return...