二叉樹的遍歷,求高度、葉子、結點的非遞迴形式,可以在某乙個遍歷中增加一項用於統計的次數即可。
1//層序遍歷:以rear走兩步(即兩個if()語句),front走一步的來遍歷,結合佇列畫圖可清晰了解遍歷思想
2void tree::levertree(node *root) else
16if (p->rchild != null) 19}
20}
21 cout <23//
後序遍歷:
24void tree::posttree(node *root)
35 p = null; //
初始化為空,來判斷當前的棧頂有無右孩子,無則該右孩子就是空null
36 flag = false; //
false表示不含右孩子
37while (top != -1 && flag == false
) 44
else 48}
49 } while (top != -1
);50 cout <52}
53//
中序遍歷:
54void tree::intree(node *root) //
左子樹的左孩子全部入棧完畢
65if (top > -1)70}
71 cout <73}
74//
先序遍歷:
75void tree::pretree(node *root)
87if (p->lchild != null) 90}
91 cout <93 }
二叉樹非遞迴先序遍歷
二叉樹的遞迴先序遍歷很簡單,假設二叉樹的結點定義如下 1 struct binarytreenode 2 遞迴先序遵循 根 左 右的順序 1 void preorder binarytreenode root 2非遞迴我們以乙個例子說明,仍然以之前博文的乙個二叉樹說明 1 82 36 104 55 ...
二叉樹 非遞迴遍歷(先 中 後)
include include include define maxsize 20 最多結點個數 using namespace std 二叉鍊錶 typedef struct bnodebnode,btree 順序棧 typedef btree datatype typedef structseq...
二叉樹的非遞迴先序,中序遍歷
題目描述 從鍵盤接收擴充套件先序序列,以二叉鍊錶作為儲存結構,建立二叉樹。採取非遞迴方法輸出這棵二叉樹的先序 中序遍歷序列。樣例輸入 abc de g f 樣例輸出 abcdegf cbegdfa 實現 include include define max 100 typedef struct no...