二叉樹的非遞迴中序遍歷

2022-01-11 23:53:16 字數 1134 閱讀 7413

1 #include2 #include3

using

namespace

std;4//

二叉樹的資料結構

5struct

bitnode6;

1011 typedef struct

bitnode bitnode;

12 typedef struct bitnode*bitree;

13//

非遞迴實現

14/*

15步驟1:

16如果節點有左子樹,則入棧;

17如果節點沒有左子樹,則訪問該節點;

18步驟2:

19如果節點有右子樹,重複步驟1;

20如果節點沒有右子樹,證明節點訪問完畢,根據棧頂指示回退,訪問棧頂元素,並訪問右子樹,重複步驟1;

21如果棧為空,則遍歷結束

22*/

23//

找到中序遍歷的起點

24 bitnode* goleft(bitnode* root, stack&s)

2530

//如果root一直有左孩子 則將root入棧

31while (root->lchild !=null)

3236

37//

返回起點!

38return

root;39}

40void inorder2(bitnode*root)

4158

//如果begin沒有右子樹 根據棧頂指示回退

59else

if (!mystack.empty())

6064

//如果begin沒有右子樹 mystack為空

65else

6669}70

}717273

//遞迴實現中序遍歷

74void inorder(bitnode *root)

7580 inorder(root->lchild);

81 printf("

%d ", root->data);

82 inorder(root->rchild);83}

8485

void

main()

86108

非遞迴中序遍歷二叉樹

非遞迴中序遍歷二叉樹 include define maxsize 100 typedef char datatype 二叉鍊錶型別定義 typedef struct binnode binnode,bintree 順序棧型別定義 typedef struct seqstk 初始化棧 int ini...

二叉樹的非遞迴中序遍歷

最近在溫習資料結構,通常網上看到的二叉樹非遞迴中序遍歷如以下形式 define maxnode 100 二叉樹最大節點數 定義二叉樹鏈式結構 typedef struct bitnode bitnode,bitree 二叉樹進行中序非遞迴遍歷 void nrinorder bitree t stac...

二叉樹的非遞迴中序遍歷

編寫程式建立如圖二叉樹的二叉鍊錶儲存 萌新求解 1 編寫演算法,非遞迴中序遍歷此二叉樹 2 編寫遞迴演算法,將此二叉樹左右子樹進行交換 定義二叉樹的二叉鍊錶結點結構 typedef struct node bitnode,bitree 定義順序棧 typedef struct seqstack 初始...