二叉樹的非遞迴先序,中序遍歷

2021-09-29 16:54:51 字數 957 閱讀 9628

#題目描述**

從鍵盤接收擴充套件先序序列,以二叉鍊錶作為儲存結構,建立二叉樹。採取非遞迴方法輸出這棵二叉樹的先序、中序遍歷序列。

##樣例輸入

abc##de#g##f###

##樣例輸出

abcdegf

cbegdfa

**實現:

#include

#include

#define max 100

typedef

struct nodebetree,

*bitree;

typedef

struct

seqdtack;

void

creat

(bitree *root)

}//初始化棧

seqstack *

initstack

(seqstack *s)

//判空

intisempty

(seqstack *s)

//進棧

intpush

(seqstack *s,bitree p)

}//出棧

bitree pop

(seqstack *s,bitree p)

}//訪問

void

visit

(char p)

//先序

void

preorder

(bitree root)if(

!isempty

(s))}}

//中序

void

inorder

(bitree root)if(

!isempty

(s))}}

intmain()

二叉樹非遞迴先序遍歷

二叉樹的遞迴先序遍歷很簡單,假設二叉樹的結點定義如下 1 struct binarytreenode 2 遞迴先序遵循 根 左 右的順序 1 void preorder binarytreenode root 2非遞迴我們以乙個例子說明,仍然以之前博文的乙個二叉樹說明 1 82 36 104 55 ...

二叉樹的非遞迴遍歷(先序,中序,後序)

遍歷演算法 1 中序遍歷的遞迴演算法定義 若二叉樹非空,則依次執行如下操作 1 遍歷左子樹 2 訪問根結點 3 遍歷右子樹。2 先序遍歷的遞迴演算法定義 若二叉樹非空,則依次執行如下操作 1 訪問根結點 2 遍歷左子樹 3 遍歷右子樹。3 後序遍歷得遞迴演算法定義 若二叉樹非空,則依次執行如下操作 ...

二叉樹的非遞迴先序,中序,後序遍歷

二叉樹的非遞迴遍歷 先序遍歷,中序遍歷,後序遍歷 include include using namespace std typedef struct node binode,bitree 先序遞迴建立樹,這裡注意引數的型別,t的型別是 如果是 稍加改動就ok.void createtree bit...