除錯二叉樹各種遍歷演算法,第七章,實驗題2

2021-10-10 18:48:57 字數 2284 閱讀 5422

遞迴先序中序後序非遞迴先序中序後序

除錯二叉樹各種遍歷演算法,第七章,實驗題2

#include #include using namespace std;

/* * 二叉樹的定義和各種運算部分

*/#define maxsize 100

typedef char elemtype;

typedef struct node

btnode;

void createbtree(btnode*& b, char* str) //創造二叉樹}}

j++;

ch = str[j];

}}void destroybtree(btnode*& b) //銷毀二叉樹

}btnode* findnode(btnode* b, elemtype x)

else if(b->data == x)

else

else

}}btnode* lchildnode(btnode* p) //返回左子樹

btnode* rchildnode(btnode* p) //返回右子樹

int btheight(btnode* b) //求二叉樹的高度

}void dispbtree(btnode* b) //輸出二叉樹

}}/*

* 佇列定義和各種演算法部分

*/typedef struct sqqueue;

void initqueue(sqqueue*& q)

void destroyqueue(sqqueue*& q)

bool queueempty(sqqueue* q)

bool enqueue(sqqueue*& q, btnode* e)

q->rear = (q->rear + 1) % maxsize;

q->data[q->rear] = e;

return true;

}bool dequeue(sqqueue*& q, btnode*& e)

q->front = (q->front + 1) % maxsize;

e = q->data[q->front];

return true;}/*

* 棧定義部分

*/typedef struct

sqstack;

void initstack(sqstack*& s)

void destroystack(sqstack*& s)

bool stackempty(sqstack* s)

bool push(sqstack*& s, btnode* e)

s->top++;

s->data[s->top] = e;

return true;

}bool pop(sqstack*& s, btnode*& e)

bool gettop(sqstack* s, btnode*& e)

/* * 2.除錯二叉樹各種遍歷演算法,第七章,實驗題2

*/#include #include using namespace std;

#include "btreeadd.cpp"

/* * 遍歷

*/void preorder(btnode* b) //遞迴先序遍歷

}void preorder1(btnode* b) //非遞迴先序遍歷

if (p->lchild != null)

}cout << endl;

}destroystack(st);

}void inorder(btnode* b) //遞迴中序遍歷

}void inorder1(btnode* b) //非遞迴中序遍歷

if (!stackempty(st))

}cout << endl;

destroystack(st);

}void postorder(btnode* b) //遞迴後序遍歷

}void postorder1(btnode* b) //非遞迴後序遍歷

r = null;

flag = true;

while (!stackempty(st) && flag)

else

}} while (!stackempty(st));

printf("\n");

destroystack(st);}/*

* 層次遍歷

*/void levelorder(btnode* b)

}}int main(void)

二叉樹 各種遍歷演算法

include include include using namespace std 二叉樹結點 typedef struct bitnodebitnode,bitree 按先序序列建立二叉樹 int createbitree bitree t else return 0 輸出 void visi...

二叉樹的各種遍歷演算法

typedef struct treenode int data struct treenode left struct treenode right int flag 該標記用於後序非遞迴遍歷 ptree 先序遞迴遍歷 void bt preorder ptree root if root nul...

二叉樹遍歷的各種演算法

二叉樹的遍歷是指按照一定次序訪問二叉樹中的所有節點,且每個節點僅被訪問一次的過程。是最基本的運算,是其他運算的基礎。二叉樹有兩種儲存結構 順序儲存和鏈式儲存 順序儲存 對完全二叉樹來說,可以充分利用儲存空間,但對於一般的二叉樹,只有少數的儲存單元被利用 cpp view plain copy typ...