二叉樹的先序遍歷的非遞迴演算法

2021-10-10 22:36:14 字數 3050 閱讀 5450

#include

#include

"btree.h"

#include

using

namespace std;

intmain()

else

if(q-

>rchild==

null

)else

printf

("\n(4)二叉樹深度:%d\n"

,btnodedepth

(p))

;printf

("\n(5)先序遍歷非遞迴演算法結果:");

dispbtnodebefore

(p);

printf

("\n(6)釋放二叉樹");

}

#define maxsize 100

typedef

char elemtype;

typedef

struct node

btnode;

typedef

struct

sqstack;

void

createbtnode

(btnode *

&b,char

*str)

;//由str串建立二叉鏈

btnode *

findnode

(btnode *b,elemtype x)

;//返回data域為x的節點指標

btnode *

lchildnode

(btnode *p)

;//返回*p節點的左孩子節點指標

btnode *

rchildnode

(btnode *p)

;//返回*p節點的右孩子節點指標

intbtnodedepth

(btnode *b)

;//求二叉樹b的深度

void

dispbtnode

(btnode *b)

;//以括號表示法輸出二叉樹

void

destroybtnode

(btnode *

&b);

//銷毀二叉樹

void

initstack

(sqstack *

&s);

//初始化棧

void

destroystack

(sqstack *

&s);

//銷毀棧

bool

stackempty

(sqstack *s)

;//棧是否為空

intstacklength

(sqstack *s)

;//返回棧中元素個數——棧長度

bool

push

(sqstack *

&s,btnode * e)

;//入棧

bool

pop(sqstack *

&s,btnode *

&e);

//出棧

bool

gettop

(sqstack *s,btnode *

&e);

//取棧頂資料元素

void

dispstack

(sqstack *s)

;//輸出棧

void

dispbtnodebefore

(btnode *b)

;//先序遍歷非遞迴

#include

#include

#include

"btree.h"

void

createbtnode

(btnode *

&b,char

*str)

//由str串建立二叉鏈

else}}

j++; ch=str[j];}

printf

("建立成功!\n");

}btnode *

findnode

(btnode *b,elemtype x)

//返回data域為x的節點指標

}btnode *

lchildnode

(btnode *p)

//返回*p節點的左孩子節點指標

btnode *

rchildnode

(btnode *p)

//返回*p節點的右孩子節點指標

intbtnodedepth

(btnode *b)

//求二叉樹b的深度

}void

dispbtnode

(btnode *b)

//以括號表示法輸出二叉樹}}

void

destroybtnode

(btnode *

&b)//銷毀二叉樹

}void

dispbtnodebefore

(btnode *b)

if(p-

>lchild!=

null)}

}destroystack

(st);}

void

initstack

(sqstack *

&s)void

destroystack

(sqstack *

&s)int

stacklength

(sqstack *s)

//返回棧中元素個數——棧長度

bool

stackempty

(sqstack *s)

bool

push

(sqstack *

&s,btnode * e)

else

}bool

pop(sqstack *

&s,btnode *

&e)else

}bool

gettop

(sqstack *s,btnode *

&e)

二叉樹非遞迴先序遍歷

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

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

題目描述 從鍵盤接收擴充套件先序序列,以二叉鍊錶作為儲存結構,建立二叉樹。採取非遞迴方法輸出這棵二叉樹的先序 中序遍歷序列。樣例輸入 abc de g f 樣例輸出 abcdegf cbegdfa 實現 include include define max 100 typedef struct no...

非遞迴先序遍歷二叉樹 2

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