成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

二叉樹的非遞歸遍歷

第一章:介紹在這篇文章中,我們將討論二叉樹的非遞歸遍歷。首先,讓我們了解算法的背景和實驗內(nèi)容。第二章:算法規(guī)范(1) 前序遍歷:前序遍歷是指在處理子節(jié)點之前先處理節(jié)點本身。代碼如下:```// 前序遍

第一章:介紹

在這篇文章中,我們將討論二叉樹的非遞歸遍歷。首先,讓我們了解算法的背景和實驗內(nèi)容。

第二章:算法規(guī)范

(1) 前序遍歷:

前序遍歷是指在處理子節(jié)點之前先處理節(jié)點本身。代碼如下:

```

// 前序遍歷

void preorderTraversal(TreeNode* root) {

stack s;

TreeNode* node root;

while (!s.empty() || node ! NULL) {

if (node ! NULL) {

// 處理節(jié)點

cout << node->val << " ";

s.push(node);

node node->left;

} else {

node ();

s.pop();

node node->right;

}

}

}

```

(2) 中序遍歷:

中序遍歷是指在處理左右子節(jié)點之間先處理節(jié)點本身。代碼如下:

```

// 中序遍歷

void inorderTraversal(TreeNode* root) {

stack s;

TreeNode* node root;

while (!s.empty() || node ! NULL) {

if (node ! NULL) {

s.push(node);

node node->left;

} else {

node ();

s.pop();

// 處理節(jié)點

cout << node->val << " ";

node node->right;

}

}

}

```

(3) 后序遍歷:

后序遍歷是指在處理子節(jié)點之后才處理節(jié)點本身。代碼如下:

```

// 后序遍歷

void postorderTraversal(TreeNode* root) {

stack s1, s2;

TreeNode* node root;

s1.push(node);

while (!s1.empty()) {

node ();

s1.pop();

s2.push(node);

if (node->left ! NULL) {

s1.push(node->left);

}

if (node->right ! NULL) {

s1.push(node->right);

}

}

while (!s2.empty()) {

node ();

s2.pop();

// 處理節(jié)點

cout << node->val << " ";

}

}

```

第三章:源代碼(C語言)

第四章:測試結(jié)果

測試一:

測試目的:使用普通二叉樹驗證程序的正確性。

預期結(jié)果:(前序遍歷)A B D G C E F ,(中序遍歷)D G B A E C F,(后序遍歷)G D B E F C A

程序?qū)嶋H運行結(jié)果:

測試二:

測試目的:使用完全二叉樹驗證程序的正確性。

預期結(jié)果:(前序遍歷)A B D E C F,(中序遍歷)D B E F C,(后序遍歷)D E B F C A

程序?qū)嶋H運行結(jié)果:

測試三:

測試目的:使用滿二叉樹驗證程序的正確性。

預期結(jié)果:(前序遍歷)A B D E C F G,(中序遍歷)D B E A F C G,(后序遍歷)D E B F G C A

程序?qū)嶋H運行結(jié)果:

第五章:分析和評論

通過對二叉樹的非遞歸遍歷實現(xiàn),每個節(jié)點只需要遍歷一次,所以算法的時間復雜度為O(n)。對于進一步可能的改進,也許可以嘗試使用兩個棧來實現(xiàn)后序遍歷。

標簽: